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"]);
    }

  • 相关阅读:
    Python爬虫之-动态网页数据抓取
    Python爬虫之 正则表达式和re模块
    Python爬虫 XPath语法和lxml模块
    Python 多线程爬虫
    PAT 1037 在霍格沃茨找零钱
    PAT 1033 旧键盘打字
    PAT 1019 数字黑洞
    PAT 1057 数零壹
    PAT 1026 程序运行时间
    PAT 1023 组个最小数
  • 原文地址:https://www.cnblogs.com/yinqiang/p/3491835.html
Copyright © 2011-2022 走看看