zoukankan      html  css  js  c++  java
  • KVC该机制

    KVC该机制
    KVCcocoa的大招,用来间接获取或者改动对象属性的方式。
    一、KVC的作用:
    KVC大招之中的一个:
    [
    self setValuesForKeysWithDictionary:dict];
    KVC
    的大招之二:
    使用KVC在获取数值时,假设指定对象不包括keyPath"键名"。会自己主动进入对象的内部查找
    假设取值的对象是一个数组,相同返回一个数组
    [
    self.carGroups valueForKey:@"title”];// 会在嵌套的plist文件里依次查找。
    kvc机制的注意事项:
     
    1. 依据字典给模型赋值,一个个键值对给模型赋值,太麻烦了。利用KVC将字典中全部内容赋值给模型。须要注意假设模型中的属性和字典中key不匹配的时候,就会报错。报找不到模型中的属性。


     
    2.模型中的属性能够不所有出如今plist文件里


    二、KVC的使用
    1.KVC能够改变私有变量。
    2.KVC支持数学运算。


    3.forKeyPath包括了forKey的功能。

    4.forKeyPath中能够利用.运算符,一层一层的往下查找对象的属性。
    5.假设forKeyPath查找对象的某一个属性为数组类型,会返回一个新的数组。
    6.赋值
    [self setValue:tabBar forKeyPath:@"tabBar"];
    7.取值
    [self valueForKeyPath:@"tabBar];

    三、KVC内部的实现原理
    KVC的内部实现原理:
    利用KVC给模型属性赋值的内部实现原理(setValuesForKeysWithDictionary):会遍历字典中的全部键值对,然后调用模型对象的setValue:forKey,依据字典中的全部key。给模型属性赋值。

    可是模型中的属性和字典中不匹配的时候。当模型调用setValue:forKey。这时候依据key没有找到模型中属性的时候,就会报错。

    解决方案:
    利用执行时机制依据模型中的属性找到字典中的键值对给属性赋值。这样就不会报找不到相应key错误。

    版权声明:本文博客原创文章,博客,未经同意,不得转载。

  • 相关阅读:
    IMP本质上是一个通用的函数指针
    yourphp常用标签
    yourphp目录结构
    HTTP与HTTPS的区别
    https和http有什么区别
    如何把浏览器不信任的网址设置为可信任的网点
    ico图标在谷歌浏览器中如何显示?
    Yourphp是一款完全开源免费的.核心采用了Thinkphp框架
    No input file specified的解决方法apache伪静态
    一个服务器的吞吐率
  • 原文地址:https://www.cnblogs.com/lcchuguo/p/4680882.html
Copyright © 2011-2022 走看看