zoukankan      html  css  js  c++  java
  • KVC&KVO

    KVC
    1.KVC直接修改某个对象的某个属性
    [stu setValue:@"MIKE" forKey:@"name"];
    [stu setValue:@10 forKey:@"age"];
    2.KVC也可以批量设置某个对象的所有属性
    [stu setValuesForKeysWithDictionary:@{@"age": @10,@"name":@"rose"}];
    3.批量获取对象的属性
    NSDictionary *dict = [stu dictionaryWithValuesForKeys:@[@"name",@"age"]];
    4.使用键值路径间接修改对象的属性值
    stu.book = [[Book alloc] init];
    [stu setValue:@1.22 forKeyPath:@"book.price"];
    5.通过KeyPath来获取数组内所有对象的相同属性
    NSArray *array = @[stu,stu1,stu2];
    NSArray *names = [array valueForKeyPath:@"name"];
    6.通过keyPath来计算所有书的价格
    stu.books = @[[Book bookWithPrice:2.2],[Book bookWithPrice:2.1],[Book bookWithPrice:10]];
    int sum = [[stu valueForKeyPath:@"books.@sum.price"] intValue];
    所有用key的地方都可以用keyPath

    =======================================KVO=======================================


    KVO是监听对象属性的改变
    //通过KVO来监听stu的name属性的变化
    [stu addObserver:observer forKeyPath:@"name" options:NSKeyValueObservingOptionNew context:nil];
    //属性改变后,会调用监听者的方法,并把一系列参数发送过来
    - (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context
    {
    NSLog(@"%@",keyPath);
    NSLog(@"%@",object);
    NSLog(@"%@",change[@"new"]);
    }

  • 相关阅读:
    《javascript设计模式》2接口
    对css类名className的一些操作的函数
    js设计模式方法的链式调用及回调
    js设计模式封装
    ajax的封装
    js设计模式单体(Singleton)
    js设计模式继承
    metasploit
    使用 AsyncCallback 处理异步调用
    log4net 的使用
  • 原文地址:https://www.cnblogs.com/yinqiang/p/3491835.html
Copyright © 2011-2022 走看看