#import "ViewController.h"
#import "Person.h"
#import "Book.h"
@interface ViewController ()
// 私有屬性:用于保存數(shù)據(jù)
@property (weak, nonatomic) IBOutlet UIView *tempView;
@end
@implementation ViewController
- (void)viewDidLoad {
[super viewDidLoad];
//早期版本? 在故事版拖 view ,得到 tempView私有屬性
[_tempView setValue:[UIColor redColor] forKey:@"backgroundColor"];
}
/**
kvc 在數(shù)組中的應(yīng)用: 使用 valueForKeyPath: 方法取數(shù)組中對象的屬性值(通過對象的屬性取值)
*/
//kvc 和數(shù)組
- (void)kvcAndArray{
//kvc 和數(shù)組結(jié)合使用
Person *p1 = [Person new];
p1.name = @"RedDog";
Person *p2 = [Person new];
p2.name = @"YellowMonkey";
Person *p3 = [Person new];
p3.name = @"GreenChicken";
//添加到數(shù)組中
NSArray *tempArray = @[p1, p2, p3];
NSArray *nameArray = [tempArray valueForKeyPath:@"name"];? //得到數(shù)組
NSLog(@"%@",nameArray);
}
/**
kvc 在字典中的應(yīng)用: 使用字典給對象的屬性賦值:? setValuesForKeysWithDictionary:
*/
//kvc和字典
- (void)kvcAndDict{
NSDictionary *dict = @{@"name":@"小可愛",@"age":@18};
//實(shí)例化一個(gè) Person 對象
Person *p1 = [Person new];
[p1 setValuesForKeysWithDictionary:dict];
NSLog(@"%@,%d",p1.name,p1.age);
}
/**
kvc 在對象中的應(yīng)用: setValue: forKey:? /? setValue: forKeyPath:
*/
// kvc 和對象
- (void)kvcAndObject{
//實(shí)例化對象
Person *p1 = [Person new];
//使用 kvc 為對象的屬性賦值
[p1 setValue:@"小可愛" forKey:@"name"];
[p1 setValue:@18 forKey:@"age"];
//實(shí)例化一本書
Book *book = [Book new];
p1.book = book;
//為p1對象的 book 屬性中的 bookName進(jìn)行賦值
[p1 setValue:@"LittleYellow" forKeyPath:@"book.bookName"];
NSLog(@"%@,%d,%@",[p1 valueForKey:@"name"],[[p1 valueForKey:@"age"]intValue],[p1 valueForKeyPath:@"book.bookName"]);
}
@end
//總結(jié):setValue: forKey:? 用于屬性名
//? ? ? setValue: forKeyPath:? 用于復(fù)合路徑