为什么我需要在核心数据项目中使用原始访问器方法?

时间:2011-04-01 04:17:47

标签: iphone core-data

为什么我需要在核心数据项目中使用原始访问器方法?

我正在阅读关于核心数据的内容,请注意以下内容:

  

默认情况下,Core Data是动态的   创造有效的公共和原始   获取并设置访问器方法   建模属性(属性和   管理对象的关系   类...

     

例如,给定一个实体   属性firstName,核心数据   自动生成firstName,   setFirstName:,primitiveFirstName,和   setPrimitiveFirstName:

我还不确定原始访问器方法是什么?他们是如何工作的?当&为什么我需要在正常的访问器方法上使用它们?

感谢

3 个答案:

答案 0 :(得分:5)

在普通类中,您通常不会使用原始访问器,但Core Data会经常使用它们。最常见的场景:您编写自定义访问器(执行维护,创建默认对象,处理持久属性的瞬态包装等),但希望使用Core Data的优化存储。如果优化的访问器是普通访问器,那么您的自定义访问器将阻止它可用,而只需使用原始访问器。

此外,您从Xcode获得的默认访问器包括在多对多关系中添加或删除对象的方法。如果这些方法使用普通访问器,则普通访问器将触发整个集的更改通知。相反,他们使用原始访问器并为他们正在更改的部分创建自己的更改通知。

最重要的是原始访问器是获得优化存储的唯一方法。没有它们,您将不得不使用Apple建议的实例变量。

答案 1 :(得分:1)

如果您在NSManagedObject的子类中编写自己的方法,则基本访问器使您可以直接获取对象包含的数据。

实际上,您可以像在普通类中使用实例变量一样使用它们。

答案 2 :(得分:1)

原始访问器的主要用途是防止在更改值时发送键值观​​察通知。有时您不希望发送此类通知,因为它们有相当多的开销。例如。导入大量数据集或使用暂时值来更改持久值时。

在编写客户访问方法时,几乎总是使用它们。如果查看Xcode为托管对象子类生成的访问器方法,您可以看到它们的使用方式。