为什么我需要在核心数据项目中使用原始访问器方法?
我正在阅读关于核心数据的内容,请注意以下内容:
默认情况下,Core Data是动态的 创造有效的公共和原始 获取并设置访问器方法 建模属性(属性和 管理对象的关系 类...
例如,给定一个实体 属性firstName,核心数据 自动生成firstName, setFirstName:,primitiveFirstName,和 setPrimitiveFirstName:
我还不确定原始访问器方法是什么?他们是如何工作的?当&为什么我需要在正常的访问器方法上使用它们?
感谢
答案 0 :(得分:5)
在普通类中,您通常不会使用原始访问器,但Core Data会经常使用它们。最常见的场景:您编写自定义访问器(执行维护,创建默认对象,处理持久属性的瞬态包装等),但希望使用Core Data的优化存储。如果优化的访问器是普通访问器,那么您的自定义访问器将阻止它可用,而只需使用原始访问器。
此外,您从Xcode获得的默认访问器包括在多对多关系中添加或删除对象的方法。如果这些方法使用普通访问器,则普通访问器将触发整个集的更改通知。相反,他们使用原始访问器并为他们正在更改的部分创建自己的更改通知。
最重要的是原始访问器是获得优化存储的唯一方法。没有它们,您将不得不使用Apple建议的实例变量。
答案 1 :(得分:1)
如果您在NSManagedObject
的子类中编写自己的方法,则基本访问器使您可以直接获取对象包含的数据。
实际上,您可以像在普通类中使用实例变量一样使用它们。
答案 2 :(得分:1)
原始访问器的主要用途是防止在更改值时发送键值观察通知。有时您不希望发送此类通知,因为它们有相当多的开销。例如。导入大量数据集或使用暂时值来更改持久值时。
在编写客户访问方法时,几乎总是使用它们。如果查看Xcode为托管对象子类生成的访问器方法,您可以看到它们的使用方式。