CKRecord setValue:forKey or setObject:forKey



Swift 中CKRecord类规范说使用 setObject:forKey: 来设置CKRecord的值。但是我看到很多代码示例setValue:forKey:这是NSValueCoding协议的一部分。那么有人可以解释一下一个比另一个的优势是什么吗?

不幸的是,setValue:经常被误用

简单规则:

为键/值集合类型中的键设置对象的指定方法是setObject:或键订阅。

setValue:是一种具有特殊含义的键值编码方法。例如,您可以使用一行同时设置数组中所有字典(或自定义对象)的相同属性。 setValue:还可用于通过文本键(而不是使用适当的 setter)在自定义类中设置属性。

例如语法

object.name = "foo"

object.setValue("foo", forKey:"name")

做基本一样。

使用 setValue: 的例外之一是NSManagedObject,因为此类严重依赖于键值编码。

编辑:

总结(从字面上引用了rmaddy的优秀评论,谢谢):

仅当您明确、具体需要使用键值编码时才使用setValue:forKey:

相关内容

最新更新