KVC 阅读

Key-value coding(键值编码)

参考

Key-value coding is a mechanism for indirectly accessing an object’s attributes and relationships using string identifiers.
Key-value 编程是一种机制:允许 developer 通过字符串 ID 的方式间接访问对象的属性和关系。

You can also use key-value coding to simplify your program code.
有时,我们可以使用 Key-valsue 编程简化代码。

Object Properties and KVC(对象属性和KVC的关系)

Central to key-value coding (or KVC) is the general notion of properties.
KVC 的核心就是属性概念。

A property refers to a unit of state that an object encapsulates.
属性是状态单元,该状态单元被对象封装。

A property can be one of two general types: an attribute (for example, name, title, subtotal, or textColor) or a relationship to other objects. Relationships can be either to-one or to-many
属性有两类:一类是 attribute,一类是与其它对象的关系。关系又分为一对一,一对多。

The value for a to-many relationship is typically an array or set, depending on whether the relationship is ordered or unordered.
一对多的关系中,其值通常为有序的数组,无序的集合。

KVC locates an object’s property through a key, which is a string identifier.
KVC 通过 key 定位对象的属性

A key usually corresponds to the name of an accessor method or instance variable defined by the object.
通过 key 我们可以访问到属性的访问器,或对象的实例变量。

The key must conform to certain conventions: It must be ASCII encoded, begin with a lowercase letter, and have no whitespace.
key 需要遵循一定的规则:ASCII 编码,以小写开头,不含空格。

A key path is a string of dot-separated keys that is used to specify a sequence of object properties to traverse.
key path 是以顿号分隔 keys 的字符串,通常指定了要遍历的对象属性的序列。

Making a Class KVC Compliant(使类服从 KVC)

The NSKeyValueCoding informal protocol makes KVC possible.
NSKeyValueCoding 提供了非正式的协议使 KVC 可能。

Two of its methods—valueForKey: and setValue:forKey:—are particularly important because they fetch and set a property’s value when given its key.
以上两个方法很重要,因为根据 key 可以访问和设置属性的值。

NSObject provides a default implementation of these methods, and if a class is compliant with key-value coding, it can rely on this implementation.
NSObject 提供了以上方法的实现,如果一个类遵循 KVC,可以依赖这个它的实现。

How you make a property KVC compliant depends on whether that property is an attribute, a to-one relationship, or a to-many relationship.
如何使属性顺从 KVC 取决于属性的类型:如 attribute,one to one,one to many。

For attributes and to-one relationships, a class must implement at least one of the following in the given order of preference (key refers to the property key):
对于 attributes,one to one 关系s,该类必须实现以下中一种。

  1. The class has a declared property with the name key.
    类声明以 key 为名字的属性。
  2. It implements accessor methods named key and, if the property is mutable, setKey:. (If the property is a Boolean attribute, the getter accessor method has the form isKey.)
    实现以 key 为名字的访问器方法,如果 key 对应的属性是可变的,实现 setKey: 方法。
    (如果属性是 Boolean 类型,它的 getter 访问器是 isKey)
  3. It declares an instance variable of the form key or _key.
    声明一个实例变量,格式为 key or _key。

Implementing KVC compliance for a to-many relationship is a more complicated procedure. Refer to the document that definitively describes key-value coding to learn what this procedure is.
实现 one to many 关系属性的 KVC 会更加复杂

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值