除了一般的赋值和取值的方法,我们还可以用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);
}
输出结果:

kvc简单实现的更多相关文章

  1. iOS开发UI篇—Kvc简单介绍

    ios开发UI篇—Kvc简单介绍 一.KVC简单介绍 KVC key valued coding 键值编码 KVC通过键值间接编码 补充: 与KVC相对的时KVO,即key valued observ ...

  2. iOS开发基础-KVC简单介绍

    一.KVC介绍 键值编码(Key Value Coding,KVC):使开发者不必进行任何操作就可以进行属性的动态读写. KVC操作方法由 NSKeyValueCoding 协议提供,而 NSObje ...

  3. 利用KVC使用自定义的控件

    KVC简单使用: 可以用来设置属性的值例如有个Person类下有个属性name [self setvalue:@"yourname" forkey:@"name" ...

  4. 【iOS 开发】Objective - C 面向对象 - 方法 | 成员变量 | 隐藏封装 | KVC | KVO | 初始化 | 多态

    一. Objective-C 方法详解 1. 方法属性 (1) OC 方法传参机制 Object-C 方法传参机制 : OC 中得参数传递都是值传递, 传入参数的是参数的副本; -- 基本类型 (值传 ...

  5. 文顶顶iOS开发博客链接整理及部分项目源代码下载

    文顶顶iOS开发博客链接整理及部分项目源代码下载   网上的iOS开发的教程很多,但是像cnblogs博主文顶顶的博客这样内容图文并茂,代码齐全,示例经典,原理也有阐述,覆盖面宽广,自成系统的系列教程 ...

  6. 对象属性操作-包含kvc---ios

    #import <Foundation/Foundation.h> @class Author; @interface Books : NSObject{ @private NSStrin ...

  7. iOS--开发从入门到精通

    前言: 从事iOS开发已有几个年头,平时对于iOS开发的知识积累都比较碎片化,为了更好的掌握开发技能, 索性整理iOS开发的知识体系,以便于后面进阶成iOS高级开发工程师. 一.iOS开发基础 开发设 ...

  8. ISO中运行时简单使用及KVC补充

    一.运行时简单使用 1.包含头文件<objc/message.h> 2.给对象发送消息的方法:objc_msgSend(id, SEL, ....) * 第1个参数是对象 * 第2个参数是 ...

  9. 简单总结一下NotificationCenter、KVC、KVO、Delegate

    将最近总结的最常用的几种设计模式优势与区别自己小结一下,分享给大家. kvo只能用来对属性作出反应,而不会用来对方法或者动作作出反应,是实现一个对象与另外一个对象保持同步的一种方法,能够提供观察的属性 ...

随机推荐

  1. 【HDOJ】3592 World Exhibition

    基础差分约束. /* 3592 */ #include <iostream> #include <algorithm> #include <queue> #incl ...

  2. 依据 smtp协议的简单golang 的发邮件实现

    依据 smtp协议的简单golang 的发邮件实现 协议格式如下 From:sender_user@demo.net To:to_user@demo.net Subject:这是主题 Mime-Ver ...

  3. mapreduce引用第三方jar

    要想让mapreduce程序引用第三方jar文件, 可以采用如下方式: 通过命令行参数传递jar文件, 如-libjars等; 直接在conf中设置, 如conf.set(“tmpjars”,*.ja ...

  4. Google Map API 学习四

  5. (转载)函数:mysqli_query和mysql_query有何区别?

    (转载)http://wzan315.blog.163.com/blog/static/37192636201241732045299/ Mysqli.dll是一个允许以对象的方式或者过程操作数据库的 ...

  6. (转载)javascript实现弹出对话框

    (转载)http://xiezezhun.iteye.com/blog/335898 简单对话框 一般常用的是 alert prompt confirm三种对话框 JavaScript代码: < ...

  7. [转载]typedef常见用法

    注:本文系转载,并修改了一些错误. typedef常见用法 1.常规变量类型定义 例如:typedef unsigned char uchar描述:uchar等价于unsigned char类型定义 ...

  8. BZOJ1015 [JSOI2008]星球大战starwar(并查集)

    1015: [JSOI2008]星球大战starwar Time Limit: 3 Sec  Memory Limit: 162 MBSubmit: 3895  Solved: 1750[Submit ...

  9. hdoj 2647 Reward【反向拓扑排序】

    Reward Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Subm ...

  10. Pattern()和Matcher() 用法

    1.简介: java.util.regex是一个用正则表达式所订制的模式来对字符串进行匹配工作的类库包.  它包括两个类:Pattern和Matcher . Pattern: 一个Pattern是一个 ...