·您现在的位置: 云翼网络 >> 文章中心 >> 网站建设 >> app软件开发 >> IOS开发 >> KVC

KVC

作者:佚名      IOS开发编辑:admin      更新时间:2022-07-23

KVC (key value coding)键值编码

先定义两个类,person,dog

1 @interface Dog : NSObject
2 @PRoperty (nonatomic,copy) NSString *name;
3 @end
 1 #import <Foundation/Foundation.h>
 2 @class Dog;
 3 
 4 @interface Person : NSObject
 5 @property (nonatomic,copy) NSString *name;
 6 @property (nonatomic,assign) int age;
 7 @property (nonatomic,copy) NSString *phone;
 8 @property (nonatomic,strong) Dog *dog;
 9 
10 @end
 1   //实例化两个person
 2         Person *p = [[Person alloc]init];
 3         Person *p1= [[Person alloc]init];
 4         //实例化dog
 5         Dog *d = [[Dog alloc] init];
 6         p.dog = d;
 7         
 8         NSArray *pArray = @[p,p1];
 9         
10 
11         // 1.给p.name赋值
12         [p setValue:@"Tom" forKey:@"name"];
13         
14         // 2.用字典给p的属性赋值,类的属性必须在字典中key存在,可以比字典中得key多,但是不能少。
15         [p setValuesForKeysWithDictionary:@{@"name":@"Jack",@"age":@10,@"phone":@"24234232"}];
16         
17         NSDictionary *dict = @{@"name":@"Cruise",@"age":@12,@"phone":@"123214wrew"};
18         
19         [p1 setValuesForKeysWithDictionary:dict];
20         
21        
22         // 3.按照键值路径赋值
23         [p setValue:@"fuck" forKeyPath:@"dog.dogName"];
24         
25         // 4.KVC按照键值路径取值时,如果对象不包含指定的键值,会自动进入对象内部,查找对象属性
26         NSArray *a = [pArray valueForKeyPath:@"name"];
27         
28         NSLog(@"%@",a);
29         
30         NSLog(@"%@ ,name= %@,age = %d,phone = %@,dogname = %@",p,p.name,p.age,p.phone,p.dog.dogName);

输出结果:2014-05-25 19:49:26.634 xcode 小技巧- 自定义代码块[832:303] (
    Jack,
    Cruise
)
2014-05-25 19:49:26.641 xcode 小技巧- 自定义代码块[832:303] <Person: 0x100202d50> ,name= Jack,age = 10,phone = 24234232,dogname = fuck