KVC的应用

//    Student *stu=[[Student alloc]init];

//    [stu setValue:@12 forKey:@"age"];

//    [stu setValue:@14 forKey:@"_age"];

//    [stu setValue:@"zhangsan" forKey:@"name"];

//    [stu setValue:@"lisi" forKey:@"_name"];

//    [stu call];

//

//    Book *book=[[Book alloc]init];

//    [stu setValue:book forKey:@"book"];

//

//    [stu setValue:@"nihao" forKeyPath:@"book.title"];

//    [stu call];

//    NSString *path=[[NSBundle mainBundle]pathForResource:@"json" ofType:@"txt"];

//    NSString *jsonStr=[NSString stringWithContentsOfFile:path encoding:NSUTF8StringEncoding error:nil];

//    NSDictionary *dict=[NSJSONSerialization JSONObjectWithData:[jsonStr dataUsingEncoding:NSUTF8StringEncoding] options:NSJSONReadingAllowFragments error:nil];

//

//    News *news=[[News alloc]init];

//    [news setValuesForKeysWithDictionary:dict];

//    NSLog(@"%@",news.Name);

//    NSLog(@"----");

//    Student *s1=[[Student alloc]init];

//    s1.age=12;

//    Student *s2=[[Student alloc]init];

//    s2.age=13;

//    Student *s3=[[Student alloc]init];

//    s3.age=14;

//    Student *s4=[[Student alloc]init];

//    s4.age=15;

//    NSArray *[email protected][s1,s2,s3,s4];

//    NSLog(@"%@",[arr valueForKey:@"@count"]);

//    NSLog(@"%@",[arr valueForKeyPath:@"@min.age"]);

//    NSLog(@"%@",[arr valueForKeyPath:@"@sum.age"]);

时间: 2024-11-10 00:55:50

KVC的应用的相关文章

0124——KVC KVO模式

1.KVC KVC是Key-Value-Coding的简称,它是一种可以直接通过字符串的名 字(key)来访问类属性(实例变量)的机制.而不是通过调用Setter.Getter方法访问.当使用KVO.Core Data.CocoaBindings.AppleScript(Mac支持)时,KVC是关键技术.  Person * xw = [[Person alloc]init]; Dog *dg = [[Dog alloc]init]; //使用kvc设置成员变量的值 //使用之前必须得知道变量的

iOS开发——实用篇&KVO与KVC详解

KVO与KVC详解 由于ObjC主要基于Smalltalk进行设计,因此它有很多类似于Ruby.Python的动态特性,例如动态类型.动态加载.动态绑定等.今天我们着重介绍ObjC中的键值编码(KVC).键值监听(KVO)特性: 键值编码KVC 键值监听KVO 键值编码KVC 我们知道在C#中可以通过反射读写一个对象的属性,有时候这种方式特别方便,因为你可以利用字符串的方式去动态控制一个对象.其实由于ObjC的语言特性,你根部不必进行任何操作就可以进行属性的动态读写,这种方式就是Key Valu

【非凡程序员】 OC第九节课 (KVC的运算)

买粽子的例子,主要输练习KVC的应用,(注意:必须建立一个数组,才能使用KVC的运算)详细代码如下: 1.main函数代码: #import <Foundation/Foundation.h> #import "Person.h" #import "zongZi.h" int main(int argc, const char * argv[]) {     @autoreleasepool {         // insert code here..

初识MVC和KVC

简单MVC M---model:模型,相当于饭馆里的厨师,厨师提供他会的菜式给老板,老板不会关心他是怎么去做的. V---view:视图,相当于饭馆里的服务员,服务员从老板那里拿到菜单,提供给客户. C---controller:控制器,相当于饭馆里的老板.老板从厨师那里得到菜式,弄成菜单提供给服务员处. KVC--是一种键值编码,通过键值间接编码 K---key:键 V---value值 C---coding:编码 使用说明: 1.使用KVC间接修改对象属性时,系统会自动判断对象属性的类型,并

OC学习篇之---KVC和KVO操作

前一篇文章我们介绍了OC中最常用的文件操作:http://blog.csdn.net/jiangwei0910410003/article/details/41875015,那么今天来看一下OC中的一个比较有特色的知识点:KVC和KVO 一.KVC操作 OC中的KVC操作就和Java中使用反射机制去访问类的private权限的变量,很暴力的,这样做就会破坏类的封装性,本来类中的的private权限就是不希望外界去访问的,但是我们这样去操作,就会反其道而行,但是我们有时候真的需要去这样做,哎.所以

iOS 中KVC、KVO、NSNotification、delegate 总结及区别

iOS 中KVC.KVO.NSNotification.delegate 总结及区别 1.KVC,即是指 NSKeyValueCoding,一个非正式的Protocol,提供一种机制来间接访问对象的属性.而不是通过调用Setter.Getter方法访问.KVO 就是基于 KVC 实现的关键技术之一. Demo: @interface myPerson : NSObject { NSString*_name; int      _age; int      _height; int      _w

NotificationCenter KVC KVO Delegate总结

KVO(Key-Value- Observing): 一对多, 观察者模式,键值观察机制,它提供了观察某 一属性变化的方法,极大简化了代码. KVO底层实现: - kvo 是基于 runtime 机制实现 - 使用了 isa 混写 isa-swizzling ,当一个对象( 假设是person对象,   person的类是MYPerson)的属性值(假设 person 的 age 属性)发生改变时,系统会自动生成一个类,继承自  MYPerson : NSKVONotifying_MYPerso

iOS开发UI篇—KVC简单介绍

一.KVC简单介绍 KVC key valued coding 键值编码 KVC通过键值间接编码 补充: 与KVC相对的时KVO,即key valued observer 键值观察.监听某一个模型的属性,只要模型属性的值一变化就通知你. 二.使用KVC 1.KVC基本使用介绍 (1)代码示例: 新建一个命令行项目,用以演示KVC的用法 完成之后为项目添加一个Person类. 为Person类添加两个属性(name和age),注意这两个属性的类型. 1 #import <Foundation/Fo

K-V-C 键值观察机制

在两个不同的控制器之间传值是iOS开发中常有的情况,应对这种情况呢,有多种的应对办法.kvc就是其中的一种,所以,我们就在此解释之.   key value observing  键值观察,给人一种高冷的感觉,其实,我们可以用一个通俗的例子来解释之.就拿美俄之间的间谍来举例子.美俄是两个各自独立的国家,但是为了各自的利益,彼此之间勾心斗角,不断的爆出间谍丑闻.打住!从政治的深渊回到技术层面O(∩_∩)O.美国想知道俄罗斯的最新的导弹技术,于是派间谍收集情报,(kvo的第一步:注册观察者-美国,监

字典转模型KVC和runtime二者实现与区别

我们知道在开发中,字典转模型是一种很常用的设计模式,当字典中元素的个数比较少的时候,我们可以直接用dic[key]去给模型对象的属性赋值,但是当字典中元素的个数比较多的时候,再用前面的解决方法就不行了,所以就有了KVC(key value coding:键值编码)字典转模型的设计模式. KVC的设计原理: [item setValue:@"value" forKey:@"property"]: 1.首先去模型中查找有没有setProperty,找到,直接调用赋值 [