#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: 用于复合路径
网友评论