kvc

#import "ViewController.h"

#import "Person.h"

#import "Book.h"

@interface ViewController ()

// 私有属性:用于保存数据

@property (weak, nonatomic) IBOutlet UIView *tempView;

@end

@implementation ViewController

- (void)viewDidLoad {

[super viewDidLoad];

//早期版本  在故事版拖 view ,得到 tempView私有属性

[_tempView setValue:[UIColor redColor] forKey:@"backgroundColor"];

}

/**

kvc 在数组中的应用: 使用 valueForKeyPath: 方法取数组中对象的属性值(通过对象的属性取值)

*/

//kvc 和数组

- (void)kvcAndArray{

//kvc 和数组结合使用

Person *p1 = [Person new];

p1.name = @"RedDog";

Person *p2 = [Person new];

p2.name = @"YellowMonkey";

Person *p3 = [Person new];

p3.name = @"GreenChicken";

//添加到数组中

NSArray *tempArray = @[p1, p2, p3];

NSArray *nameArray = [tempArray valueForKeyPath:@"name"];  //得到数组

NSLog(@"%@",nameArray);

}

/**

kvc 在字典中的应用: 使用字典给对象的属性赋值:  setValuesForKeysWithDictionary:

*/

//kvc和字典

- (void)kvcAndDict{

NSDictionary *dict = @{@"name":@"小可爱",@"age":@18};

//实例化一个 Person 对象

Person *p1 = [Person new];

[p1 setValuesForKeysWithDictionary:dict];

NSLog(@"%@,%d",p1.name,p1.age);

}

/**

kvc 在对象中的应用: setValue: forKey:  /  setValue: forKeyPath:

*/

// kvc 和对象

- (void)kvcAndObject{

//实例化对象

Person *p1 = [Person new];

//使用 kvc 为对象的属性赋值

[p1 setValue:@"小可爱" forKey:@"name"];

[p1 setValue:@18 forKey:@"age"];

//实例化一本书

Book *book = [Book new];

p1.book = book;

//为p1对象的 book 属性中的 bookName进行赋值

[p1 setValue:@"LittleYellow" forKeyPath:@"book.bookName"];

NSLog(@"%@,%d,%@",[p1 valueForKey:@"name"],[[p1 valueForKey:@"age"]intValue],[p1 valueForKeyPath:@"book.bookName"]);

}

@end



//总结:setValue: forKey:  用于属性名

//      setValue: forKeyPath:  用于复合路径

你可能感兴趣的:(kvc)