除了一般的赋值和取值的方法,我们还可以用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. 《Effective C++》条款26 防卫潜伏的ambiguity模棱两可的状态

    每个人都有思想.有些人相信自由经济学,有些人相信来生.有些人甚至相信COBOL是一种真正的程序设计语言.C++也有一种思想:它认为潜在的二义性不是一种错误.ambiguity 这是潜在二义性的一个例子 ...

  2. Unity 打包完太大

    打包完以后,看BuildLog,发现 Level 这一项数据很大,按照官方文档,这应该是很小的一项才对,但是我们的包中Level占据了80+M,20-30%,经过反复试验,发现是 Static Bat ...

  3. UVA 11796 Dog Distance(向量)

    题目链接:http://acm.hust.edu.cn/vjudge/problem/viewProblem.action?id=31962 [代码] #include<cstdio> # ...

  4. 简单登陆UI设计

    简单UI设计 作品效果图: 关键技术:      用到了本地化控件:SharedPreferences,简单的说就是本地配置. 四大组件:Intent 基本思路请看代码: Java代码: import ...

  5. zoj 3659 Conquer a New Region(并查集)

    题目链接:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemId=4882 代码: #include<cstdio> #inc ...

  6. arm 及ndk编译

        首页  »   Android android的armeabi跟armeabi-v7a 网友分享于:2014-03-16  浏览:867次 android的armeabi和armeabi-v7 ...

  7. Apple Pay强势来袭,开发者应做的事情

    "iOS8.1就已经有这个功能了,只是木有现在这么的火,现在的趋势是要火的节奏,因此很多电商平台B2B,P2P,C2C,X2X都有可能需要这个屌丝的付款功能了,在此简单的研究一下." ...

  8. Action

    学习Action的几个内容 1.实现一个Action的最常用方式: 从ActionSupport继承     链接 2.Action配置 DMI动态方法调用 ! 通配符配置 * {1} {2} … * ...

  9. Java的序列化与反序列化(一):初识

    Java提供了一种对象序列化的机制:一个对象可以被表示为一个字节序列,该字节序列包含对象的数据.有关对象的类型的信息和存储在对象中数据的类型. 将序列化对象写入文件之后,可以从文件中读取出来,并且对它 ...

  10. java 新手

    public class hello{ public static void main(String args[]){ int a=23,b=32,c=34; int s=Math.max(a,c); ...