首页 > 学院 > 开发设计 > 正文

KVC

2019-11-14 20:28:08
字体:
来源:转载
供稿:网友

KVC (key value coding)键值编码

先定义两个类,person,dog

1 @interface Dog : NSObject2 @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


发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表