KVC

全称: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;
}

 

posted on 2016-02-18 14:13  微末凡尘12138  阅读(149)  评论(0编辑  收藏  举报

导航