美文网首页
KVC实例代码

KVC实例代码

作者: JaXz | 来源:发表于2016-04-23 14:17 被阅读35次

pragma mark 获取单个值

    NSString *name =  [p valueForKey:@"name"];
    double money = [[p valueForKey:@"money"] doubleValue];
    
    #pragma mark 获取多层值
    //NSString *PName = [p valueForKey:@"person.name"];
    NSString *PName = [p valueForKeyPath:@"person.name"];
   
    #pragma mark 模型转字典
    NSDictionary *dict = [p dictionaryWithValuesForKeys:@[@"name", @"money"]];
     
    #pragma mark 获取数组中对象的值
    Person *p1 = [Person new];
    p1.name = @"hh";
    p1.money = 111;

    Person *p2 = [Person new];
    p2.name = @"ll";
    p2.money = 222; 

    Person *p3 = [Person new];
    p3.name = @"vv";
    p3.money = 333;

    NSArray *arr = @[p1, p2, p3];

    // 如果数组中的元素都是同一种类型的数据, 可以使用KVC获取数组中所有对象的某个属性的值
    NSArray *res = [arr valueForKeyPath:@"name"]; 

    #pragma mark 运算符
    id res1 = [arr valueForKeyPath:@"@avg.money"];

    #pragma mark 单个值
    [p setValue:@"lmj" forKey:@"name"];

    #pragma mark 多层赋值  
    [p setValue:@"xiaoqiang" forKeyPath:@"dog.name"];
    [p setValue:@(110) forKeyPath:@"dog.price"];

    #pragma mark 给私有成员变量赋值 
    /*
     //    [p setValue:@"cjp" forKey:@"_name"];
     //    [p setValue:@(30) forKey:@"_age"];

     //    SEL sel = @selector(say);
     //    [p performSelector:sel];
     //    [p say];
     */

    #pragma mark 字典转模型  

    NSDictionary *dict = @{
                           @"name":@"xxx",
                           @"money": @(998.1),
                           //                           @"score":@(100)
                           @"dog":@{
                                   @"name":@"wangcai",
                                   @"price":@(110)
                                   }
                           };

    //    p.name = dict[@"name"]; 
    //    p.money = [dict[@"money"] doubleValue];
       
    [p setValuesForKeysWithDictionary:dict];

相关文章

  • KVC实例代码

    pragma mark 获取单个值

  • Key-Value-Observing OC&Swift

    KVC 支持实例变量,KVO 只能手动支持手动设定实例变量的KVO实现监听。KVO通过set方法来通知。或者KVC...

  • iOS面试题0004-KVC和KVO的keyPath一定是属性么

    KVC 支持实例变量,KVO 只能手动支持手动设定实例变量的KVO实现监听

  • KVC/KVO理解

    KVC 与 KVO 是 Objective C 的关键概念,是必须要理解的东西 下面是实例讲解。 一、KVC – ...

  • Python-数据类型及其操作方法

    数字类型 代码实例: 字符串类型 代码实例: 列表 代码实例: 元组 代码实例 字典: 代码实例 集合 代码实例:

  • iOS-KVC相关

    KVC相关 一、 iOS成员变量,实例变量,属性变量的区别 二、KVC取值、赋值原理 *学习方式:1、分析源码 -...

  • iOS面试题续

    KVO和KVC: KVC: KVC是键值编码,是一种间接访问对象实例变量的机制,只用该机制不需要调用set或get...

  • KVC KVO以及它的延伸

    概念: 1.kvc: KVC全称Key-value coding.通过字符串的名字(key)来访问类属性(实例变量...

  • 手动设定实例变量的KVO

    前情提要:KVC 和KVO的keyPath一定是属性?:NO,KVC 默认支持实例变量。一个对象设定为属性,是默认...

  • KVO和KVC的使用及原理解析

    一 KVO基本使用 二 KVO本质原理讲解及代码验证 三 KVC基本使用 四 KVC设值原理 五 KVC取值原理 ...

网友评论

      本文标题:KVC实例代码

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