【问题标题】:Is it possible to fetch the data of only one attribute of an Entity in Core Data?是否可以在 Core Data 中仅获取实体的一个属性的数据?
【发布时间】:2017-10-10 12:58:48
【问题描述】:

我在 Core Data 中有一个具有多个属性的实体。为了提高应用程序的性能,我想只获取该实体的一个属性。那有可能吗?如果可以,那怎么做?还是我应该只使用谓词来获取我需要的实体并从中访问它们的属性值?谢谢。

【问题讨论】:

    标签: swift core-data swift4


    【解决方案1】:

    这取决于几件事;您要获取多少实体,您是否还想要其他任何东西,您真正的性能问题是什么?

    首先使用 Instruments 确保您的问题确实在您认为的位置。核心数据使用故障和批处理来提高内存和性能效率。实体的属性数据在被访问之前不会被带入内存。

    如果您真的只想从您的实体中获取单个属性,那么您可以发出一个将propertiesToFetch 值设置为您关心的属性的获取请求。如果您使用托管对象 resultType 执行此操作,那么我知道这将使用 更多 内存,因为它会使所有结果对象成为部分错误(填充了这些属性)而不是完整的故障。

    如果您使用字典resultType,那么您根本不会返回任何托管对象,而只会返回一个填充了相关属性的字典数组。

    【讨论】:

    • 同意,获取多个属性几乎不会导致性能问题。
    • 我只想获取实体的一个属性,以测量 XCTest 中特定方法的性能。该实体有 7 个其他属性。我只是想知道,是否有可能,如果有,会多快。
    • 你的测试会告诉你,但听起来你正在做过早的优化:)
    【解决方案2】:

    您可以获得单一属性。这是Apple's way

    【讨论】:

    • 这个的快速语法是什么样的?我有一个带有日期属性的实体......我想要的就是日期。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-08-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-09-09
    • 1970-01-01
    相关资源
    最近更新 更多