zoukankan      html  css  js  c++  java
  • kvc简单实现

     
    除了一般的赋值和取值的方法,我们还可以用Key-Value-Coding(KVC)键值编码来访问你要存取的类的属性
    kvc: kvc    key value coding 键值对编码
    可以通过 【实体类1 setValue:值 forKey:键】 来给实体类赋值
     
    假如 实体类1的属性中还包含了一个实体类1  想要在改变类属性的值  可以通过【实体类1 setValue:值 forKeyPath:键】 
     
    下边就是详细的实现的过程
    分为2部分
    1 通过 setValue: forKey  给实体类加上属性的值
    首先在Person.h文件中创建出属性
    {
        NSString *_name;
        NSInteger _age;
       
    }
    采用这种方式 想说的是这个属性是受保护的但是在viewController中通过这种方法 仍然可以改变他的值 当然 通过属性创建更能够改变啦。
    还有就是需要重写 描述方法 方便输出
     
     
     
    然后就是ViewController.m中的实现
     //创建一个person对象
        Person *person = [[Person alloc]init];
        [person setValue:@"zhangsan" forKey:@"_name"];
        [person setValue:@12 forKey:@"_age"];
           
        NSLog(@"%@",person);
    输出结果:
     
    能够看到成功赋值
    2 给person添加一个自身的类属性
    {
        NSString *_name;
        NSInteger _age;
        Person *_wife;
    }
    Viewcontroller.m
    - (void)viewDidLoad {
        [super viewDidLoad];
        //创建一个person对象
        Person *person = [[Person alloc]init];
        [person setValue:@"zhangsan" forKey:@"_name"];
        [person setValue:@12 forKey:@"_age"];
       
        //创建出另一个表示wife的person对象 并设置值
        Person *wife = [[Person alloc]init];
        [wife setValue:@"linda" forKey:@"_name"];
        [wife setValue:@12 forKey:@"_age"];
       
        //将设置好的wife当做值加入到person的_wife属性中
        [person setValue:wife  forKey:@"_wife"];
       
        //将wife的名字年龄做更改
       [person setValue:@"lisi" forKeyPath:@"_wife._name"];
        [person setValue:@20 forKeyPath:@"_wife._age"];
       
        NSLog(@"%@",person);
    }
    输出结果:
    对上述的代码,有任何疑问,可以在下方留言。 也可以给我发邮件咨询:673658917@qq.com 或者是直接加qq:673658917 转载请注明出处,谢谢合作。 睡觉舒服,那是给死人准备的,加油吧,一年后你会感谢现在的自己的。
  • 相关阅读:
    子类继承方法的重写
    操作系统的用户模式和内核模式
    Java中的CAS
    FaceBook SDK登录功能实现(Eclipse)
    eclipse集成ijkplayer项目
    android handler传递数据
    android发送短信
    hadoop中的job.setOutputKeyClass与job.setMapOutputKeyClass
    mysql对事务的支持
    使用jd-gui+javassist修改已编译好的class文件
  • 原文地址:https://www.cnblogs.com/lishanshan/p/4878212.html
Copyright © 2011-2022 走看看