ios kvc
来源:互联网 发布:usb网络共享用不了 编辑:程序博客网 时间:2024/05/23 10:53
kvc,就是key value coding(键值编码)
KVC的操作方法由NSKeyValueCoding协议提供,而NSObject就实现了这个协议,也就是说ObjC中几乎所有的对象都支持KVC操作,常用的KVC操作方法如下:
- 动态设置: setValue:属性值 forKey:属性名(用于简单路径)、setValue:属性值 forKeyPath:属性路径(用于复合路径,例如Person有一个Book类型的属性,那么person.Book就是一个复合属性)
- 动态读取: valueForKey:属性名 、valueForKeyPath:属性名(用于复合路径)
下面通过一个例子来理解KVC
Book *book = [[Book alloc] init];book.name = @"葵花宝典";
Person *person = [[Person alloc] init];
person.name = @"Jack";
person.age = 5;
person.book = book;
NSString *pName = [person valueForKey:@"name"];
NSLog(@"%@", pName);//输出结果是jack
NSString *bName = [person valueForKeyPath:@"book.name"];
NSLog(@"%@", bName);//输出结果是葵花宝典
NSString *bName1 = [person.book valueForKeyPath:@"name"];
NSLog(@"%@", bName1);//输出结果是葵花宝典
Person *p = [[Person alloc] init];
p.name = @"Jack";
p.age = 10;
Person *p1 = [[Person alloc] init];
p1.name = @"Rose";
p1.age = 40;
Person *p2 = [[Person alloc] init];
p2.name = @"Jim";
p2.age = 19;
NSArray *persons = @[p, p1, p2];
// 取出persons数组中所有person对象的name属性值
NSArray *names = [persons valueForKeyPath:@"name"];
NSLog(@"%@", names);//输出结果是jack,rose,jim
[p setValue:@"Jack" forKeyPath:@"name"];
[p setValue:@"50" forKeyPath:@"age"];
NSString *name = [p valueForKeyPath:@"name"];
int age = [[p valueForKeyPath:@"age"] intValue];
NSDictionary *dict = [p dictionaryWithValuesForKeys:@[@"name"]];
NSLog(@"-------%@", dict);
- [ios]kvc
- iOS kvc
- IOS KVC
- ios kvc
- iOS KVC
- ios学习--kvo/kvc
- ios学习--kvc
- IOS KVC使用小结
- iOS KVC KVO KVB
- iOS KVO & KVC
- iOS KVC KVO KVB
- IOS KVC 机制
- iOS中的KVC
- iOS kvc kvo 理解,
- ios KVC(NSKeyValueCoding)用法
- iOS KVO & KVC
- iOS KVO & KVC
- iOS中的KVC
- MJRefresh
- Fusion 360 一些可能的网络连接错误
- 在应用程序级别以外使用注册为 allowDefinition='MachineToApplication' 的节是错误的解决办法
- pig-on-tez or hive-on-tez 报错
- Java RTTI和反射机制
- ios kvc
- linux vmware view client修改窗口大小
- jquery 插件 模板
- Android 4.0硬件加速及绘制技巧
- mantis实验提高篇
- MFC右键菜单
- 支付宝
- 程序员从初级到高级的蜕变
- H5学习之旅-H5的基本标签(2)