设为首页 加入收藏

TOP

字典转模型之KVC(一)
2017-10-13 10:23:59 】 浏览:7180
Tags:字典 模型 KVC
1.  熟练使用KVC 可以在开发过程中可以给我们带来巨大的好处,尤其是在json 转模型的时候,KVC让程序员摆脱了繁琐无营养的代码堆积。减少代码量就是减少出错的概率。KVC 用起来很灵活,这种灵活的基础是严格的命名要求。这种命名要求其实是一种约定。再程序的世界里,约定的作用远远大于开发本身,良好的约定可以使程序员摆脱很多判断,也减少了错误。
 
1.1.基本概念
 
     1. KVC是KeyValue Coding的简称,它是一种可以直接通过字符串的名字(key)来访问类属性的机制。而不是通过调用Setter、Getter方法访问。
 
     2. 在应用程序中实现键-值编码兼容性是一项重要的设计原则。存取方法可以加强合适的数据封装,而键-值编码方法在多数情况下可简化程序代码。
 
     3. 键-值编码支持带有对象值的属性,同时也支持纯数值类型和结构。非对象参数和返回类型会被识别并自动封装/解封。
 
          使用 KVC 为对象赋值或者取值时,需要知道准确的键值, 相比较点语法,KVC 是一种间接的传递方式,这种方式有利于
          对象解耦,让对象彼此之间的耦合度不会太高。
 
1.2.设置和访问
 
     1.键/值编码中的基本调用包括 -valueForKey: 和 -setValue:forkey: 这两个方法,它们以字符串的形式向对象发送消息,字符串为属性名,
     
      2.是否存在 setter、getter 方法, 若存在优先调用相应方法;若不存在,它将在内部查找名为 _key 或 key 的实例变量。
 
      3.通过 KVC 设置对象,此对象会 retain。
      4.通过 setValue:forKey: 设置对象的值,或通过 valueForKey 来获取对象的值时,如若对象的实例变量为基本数据类型时 ( char、int、float、   
         BOOL ) ,我们需要对数据进行封装。
      5.赋值语句 setValue:forKey: 是给对象当前的属性赋值,而 setValue:forKeyPath: 是按照对象的层级关系为其中
         的属性赋值。 forKeyPath可以替代forKey,但是forKey不能替代forKeyPath。
 
      KVC中的方法:
     
       2.1 获取值
     
              valueForKey:,传入NSString属性的名字。

              valueForKeyPath:,传入NSString属性的路径,xx.xx形式。

              valueForUndefinedKey它的默认实现是抛出异常,可以重写这个函数做错误处理。
     
       2.2 修改值
     
              setValue:forKey:
     
              setValue:forKeyPath:  m
     
              setValue:forUndefinedKey:
     
              setNilValueForKey: 当对非类对象属性设置nil时,调用,默认抛出异常。
     
       2.3 一对多关系成员的情况
     
             mutableArrayValueForKey:有序一对多关系成员  NSArray
     
             mutableSetValueForKey:无序一对多关系成员  NSSet
 
1.3  KVC的实现细节
 
         搜索Setter、Getter方法,这一部分比较重要,能让你了解到KVC调用之后,到底是怎样获取和设置类成员值的。
 
    &nbs
首页 上一页 1 2 3 4 5 6 7 下一页 尾页 1/7/7
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇UITableView与UISearchController.. 下一篇iOS strong和weak联系生活中的例子

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目