【发布时间】:2017-10-10 12:58:48
【问题描述】:
我在 Core Data 中有一个具有多个属性的实体。为了提高应用程序的性能,我想只获取该实体的一个属性。那有可能吗?如果可以,那怎么做?还是我应该只使用谓词来获取我需要的实体并从中访问它们的属性值?谢谢。
【问题讨论】:
我在 Core Data 中有一个具有多个属性的实体。为了提高应用程序的性能,我想只获取该实体的一个属性。那有可能吗?如果可以,那怎么做?还是我应该只使用谓词来获取我需要的实体并从中访问它们的属性值?谢谢。
【问题讨论】:
这取决于几件事;您要获取多少实体,您是否还想要其他任何东西,您真正的性能问题是什么?
首先使用 Instruments 确保您的问题确实在您认为的位置。核心数据使用故障和批处理来提高内存和性能效率。实体的属性数据在被访问之前不会被带入内存。
如果您真的只想从您的实体中获取单个属性,那么您可以发出一个将propertiesToFetch 值设置为您关心的属性的获取请求。如果您使用托管对象 resultType 执行此操作,那么我知道这将使用 更多 内存,因为它会使所有结果对象成为部分错误(填充了这些属性)而不是完整的故障。
如果您使用字典resultType,那么您根本不会返回任何托管对象,而只会返回一个填充了相关属性的字典数组。
【讨论】:
您可以获得单一属性。这是Apple's way
【讨论】: