美文网首页
简思Key & KeyPath

简思Key & KeyPath

作者: 聪明的笨白 | 来源:发表于2016-03-27 00:52 被阅读94次

在KVC中有着这样的两种相似的方法

  • setValue:forKeyPath:
  • setValue:forKey:

这两种方法中的Key和KeyPath总是不理解,到底两者之间有什么区别呢?

在官方文档中对这两个参数有着这样的解释:

  • keyPath: A key path of the form relationship.property (with one or more relationships): for example “department.name” or “department.manager.lastName.”
  • key: The name of one of the receiver's properties.

个人理解,keyPath是一个完整的‘路径’,指向关系链中最末关系节点的属性,举一个不恰当的例子:

  • 文件路径:/Users/choshoryo/Desktop/123.png

这就是一个完整的路径,它的‘关系链’结构就是/文件夹/文件夹/文件夹/文件,最终真正要处理的是最末端文件夹中的123.png文件。同理,keyPath中真正要赋值的也是最末端的property,在找到该属性之前,系统会沿着这条关系链一层一层去寻找。因此,keyPath传入的参数应是一条描述着与接收者有关系的对象的属性的路径。

而相对的,key传入的参数则是接收者自己本身的属性。

针对keyPath为参数的KVC方法,系统是通过valueForKey:方法查找最终要赋值的属性,官方文档中有如此说明:

  • Discussion (- setValue:forKeyPath:)
    The default implementation of this method gets the destination object for each relationship using valueForKey:, and sends the final object a setValue:forKey: message.
    此作为补充加深理解

相关文章

  • 简思Key & KeyPath

    在KVC中有着这样的两种相似的方法 setValue:forKeyPath: setValue:forKey: 这...

  • 使用KeyPath实现Swift的KVC和KVO

    KeyPath KeyPath的语法为\Type.property.property..... 现在可以使用Key...

  • indexdb 代码直接可用

    var DB = {scheme: {//timetag: {key: {keyPath: "name"}},//...

  • KVC学习

    Key-Value Coding 常见方法 key 和 keyPath 的区别 key 只能访问对象的属性key...

  • kvc key与keyPath

    结论:key一般使用于model类的字符串;keyPath可用于UILabel 实例: [self.zViewCo...

  • KVC

    参考 https://www.jianshu.com/p/4748ef75126a Key KeyPath(对象包...

  • iOS CoreAnimation keyPath

    keyPath可以使用的key transform.rotation.x 围绕x轴翻转transform.rota...

  • KVC相关知识(笔记)

    kvc可以通过key来访问对象的某个属性,它常见的方法有: key和keyPath的区别是:如果想要访问的是对象内...

  • 了解 Key-Value Coding

    Key-Value Coding KVC的使用 对象属性的访问(基本类型、集合类型、集合操作符,(keyPath)...

  • 网页设计 - 收藏集 - 掘金

    免费且又精致的 HTML/CSS 站点模板 - 前端 - 掘金&l...

网友评论

      本文标题:简思Key & KeyPath

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