kvc

作者: OC骑士 | 来源:发表于2017-05-09 16:26 被阅读0次

    #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

          本文链接:https://www.haomeiwen.com/subject/auobtxtx.html