获取属性v关系(核心数据 - iPhone)

Uri*_*zen 9 iphone lazy-loading core-data objective-c

我是一名新的iPhone开发人员(大约4个月左右),他开始关注Core Data.

在Dave Mark 的"Beginning iPhone 3 Development"一书中,它提到了获取属性和关系之间的主要区别在于获取的属性允许延迟加载.但是,我已经在此站点上看到了其他资源和接受的答案,这表明关系确实允许延迟加载.

例如,如果我有一个与Employee具有多对多关系的Department对象,那么我不希望给定部门的提取将所有关联的员工加载到内存中.

我非常感谢关于这一点的权威答案,以及其他差异,因为它对任何设计都有明显的影响.

另外,如果有人能指出一个合理的核心数据资源,这是一个清晰且初学者友好的指南,我将非常感激(我以前是一名Java开发人员,但我是iPhone-Way的新手...

小智 12

从"核心数据编程指南"中,获取的属性表示"弱的单向关系".它们只是允许您使用fetch谓词定义属性的值,而不是像关系一样直接对其进行建模.

一个主要的区别是获取的属性不像直接关系那样是实时的或动态的.通过在对象图中发生将影响fetched属性值的更改时手动刷新包含fetched属性的对象,必须显式保持已获取的属性为最新.


Ale*_*lds 5

检查核心数据中的错误:

使用错误,如果从持久性存储中检索单个Employee对象,则其管理器,部门和报告关系最初由故障表示.虽然故障是Department类的一个实例,但尚未实现 - 它的持久化实例变量都没有设置.

如果你向Department对象发送一条消息来获取它的名字,那么故障就会触发 - 在这种情况下,Core Data会为你执行一次获取来检索所有对象的属性.

  • 他不明白你的答案. (11认同)