您的位置:首页 > 其它

KVC

2016-02-18 14:13 267 查看

全称:Key-value observing

用法:

@interface Book : NSObject

@property (nonatomic, strong) NSString *bookName;

@end

@interface Person : NSObject

@property (nonatomic, copy) NSString *name;
@property (nonatomic, assign) NSInteger age;
@property (nonatomic, strong) Book *book;

@end




#import <Foundation/Foundation.h>
#import "Person.h"
#import "Book.h"
int main(int argc, const char * argv[]) {
@autoreleasepool {

Person *p = [[Person alloc]init];

//类
[p setValue:@"张三" forKey:@"name"];
[p setValue:@"20" forKeyPath:@"age"];

Book *book = [[Book alloc]init];
p.book = book;
[p setValue:@"算法导论" forKeyPath:@"book.bookName"];
NSLog(@"%@, %@ , bookName: %@",p.name,[p valueForKey:@"age"],p.book.bookName);

//字典
book.bookName = @"数据结构";
NSDictionary *dict = @{@"name":@"李四",@"age":@"40",@"book":book};
[p setValuesForKeysWithDictionary:dict];
NSLog(@"%@, %@ , bookName: %@",p.name,[p valueForKey:@"age"],p.book.bookName);

//数组
Person *p2 = [[Person alloc] init];
p2.name = @"yellow Mokey";

Person *p3 = [[Person alloc] init];
p3.name = @"red dog";

Person *p4 = [[Person alloc] init];
p4.name = @"green chicken";

NSArray *array = @[p2,p3,p4];

// 把三个对象中的name 取出来
NSArray *nameArray = [array valueForKeyPath:@"name"];

NSLog(@"%@",nameArray);
}
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: