KVC小结
来源:互联网 发布:软件开发立项 编辑:程序博客网 时间:2024/06/05 08:44
// 键值编码 // 设置// [person setValue:@"Charles" forKey:@"name"];<pre name="code" class="objc"> NSMutableArray *cars = [NSMutableArray array]; for (int i =0; i < 3; i++) { Car *car = [[Car alloc] initWithMile:100*(i+1) name:[NSString stringWithFormat:@"car%d",i]]; [cars addObject:car]; } Person *person = [[Person alloc] initWithName:@"charles" cars:cars]; // 车的数量 NSNumber *count; count = [person valueForKeyPath:@"_cars.@count"]; NSLog(@"count = %@",count); // 平均行程 NSNumber *avgMile; avgMile = [person valueForKeyPath:@"cars.@avg.mile"]; NSLog(@"%@",avgMile); // 总行程 NSNumber *sumMile; sumMile = [person valueForKeyPath:@"cars.@sum.mile"]; NSLog(@"%@",sumMile); // 最大行程 NSNumber *maxMile; maxMile = [person valueForKeyPath:@"cars.@max.mile"]; NSLog(@"%@",maxMile); // 最小行程 NSNumber *minMile; minMile = [person valueForKeyPath:@"cars.@min.mile"]; NSLog(@"%@",minMile); // 得到所有car对象并存入数组中 NSArray *array; array = [person valueForKeyPath:@"cars.@distinctUnionOfObjects.name"]; NSLog(@"%@",array); Car *lastCar = [[person valueForKeyPath:@"cars"] lastObject]; NSLog(@"%@",lastCar); // 所有键 NSArray *keys = [NSArray arrayWithObjects:@"name",@"mile", nil]; // 得到所有键的对应的值 NSDictionary *dic = [lastCar dictionaryWithValuesForKeys:keys]; NSLog(@"dic = %@",dic); // 设置新键值对 NSDictionary *newCar = [NSDictionary dictionaryWithObjectsAndKeys:@"bmw",@"name",[NSNumber numberWithFloat:110],@"mile", nil]; // 更新键值对 [lastCar setValuesForKeysWithDictionary:newCar]; NSLog(@"newLastCar = %@",lastCar);
// NSLog(@"%@",person.name); // 获取 - valueForKey: NSString *name = [person valueForKey:@"name"]; NSLog(@"%@",name); // valueForKey首先会寻找-name方法,如果没有这样的get方法,他会在对象内寻找名称格式为_key 或者key 的实例变量 // 通过使用KVC,没有相关的getter方法也会获取对象值,不是通过对象指针来直接访问示例变量 // - setValue: ForKey: [person setValue:@"yaoxin" forKey:@"name"]; // 首先会查找名称的setter方法,例如setName 然后调用它并传递参数 @“yaoxin” 如果不存在setter方法,他将会在类中寻找类名为name或_name的实例变量为其赋值 NSString *newName = [person valueForKey:@"name"]; NSLog(@"%@",newName);
// 键路径 /** * 没有添加任何访问方法或属性,看KVC是如何直接获取对象的 */ Engine *engine = [[Engine alloc] init]; NSLog(@"horsePower = %@",[engine valueForKey:@"horsePower"]); [engine setValue:[NSNumber numberWithInt:150] forKey:@"horsePower"]; NSLog(@"horsePower = %@",[engine valueForKey:@"horsePower"]); // 如何表示这些键路径 Car *car = [[Car alloc] initWithEngine:engine]; [car setValue:[NSNumber numberWithInt:160] forKeyPath:@"_engine._horsePower"]; NSLog(@"horsePower = %@",[car valueForKeyPath:@"_engine._horsePower"]);
0 0
- KVC小结
- IOS KVC使用小结
- KVC、KVO小结
- KVC KVO 通知 委托模式 小结
- KVC
- Kvc....
- KVC
- KVC
- KVC
- KVC
- KVC
- kvc
- KVC
- KVC
- KVC
- KVC
- KVC
- KVC
- ViewStub的学习,展开部常用的控件
- sdnu 1078 食物链(并查集)
- 配置WinMerge作为Git的mergetool
- Balance(POJ--1837
- coreData的简介
- KVC小结
- 转:一位阿里人对数据模型建设的几点思考与总结
- 基于LDA的Topic Model变形
- Java中的八种数据类型
- 初识Java注解
- Java深度历险(一)Java字节代码的操纵
- 英语介词用法
- 最小费用最大流
- HDU 5399 Too Simple (2015年多校比赛第9场)