【发布时间】:2018-02-11 19:14:25
【问题描述】:
更新CoreData中的实体时,是否需要使用setValue(_:forKey:),还是可以直接使用默认的setter设置值?
someEntity.setValue("Bob", forKey: "Name")
对比
someEntity.name = "Bob"
第一种方法触发 KVC,第二种方法不触发(对吗?)。
接受的答案确认上述内容不正确。 @NSManaged 默认在 Swift 属性上启用 KVC。
那么托管对象上下文会无法识别更改吗?使用默认设置器有什么缺点吗?我在任何文档中都找不到明确的答案。我的测试表明它工作得很好,但是有什么我不知道的东西将来会回来咬我吗?
我在任何文档中找到的最接近的答案来自 Key-Value Coding with Swift
下的 Key-Value Coding Programming Guide默认情况下,从 NSObject 或其子类之一继承的 Swift 对象的属性符合键值编码。而在 Objective-C 中,属性的访问器和实例变量必须遵循某些模式,而 Swift 中的标准属性声明会自动保证这一点。
【问题讨论】: