【问题标题】:setPropertiesToFetch method appears to always make request return faulted objectssetPropertiesToFetch 方法似乎总是使请求返回错误对象
【发布时间】:2009-12-27 00:07:01
【问题描述】:

每当我在 NSFetchRequest 上使用 setPropertiesToFetch 时,返回的对象似乎都出现了错误。他们返回 YES 给 isFaulted,当在控制台中显示它们时,它们看起来像这样:

< MyEntity: 0x5884850> (entity: MyEntity; id: 0x5886180 <x-coredata://4D96A1CB-187C-4D92-A50C-D639F7E69114/MyEntity/p197> ; data: <fault>),

如果我不设置要获取的属性,每个对象的属性在控制台中都是可见的。知道为什么会这样吗?

【问题讨论】:

    标签: iphone core-data


    【解决方案1】:

    我从 Apple 开发者论坛得到了答案:

    https://devforums.apple.com/message/152330#152330

    “对象出现故障意味着它可能需要访问数据库,或者可能意味着该对象正在等待延迟初始化并且所有必要的数据都已缓存。使用Instruments 中的 Core Data 模板是凭经验判断差异的最佳方式。

    对于 setPropertiesToFetch,您故意不获取所有属性,因此最终会出现部分错误。访问某些属性(您告诉它获取的属性)将起作用,而访问其他属性则需要往返于数据库。 -isFault 是一个布尔值,因此大多数框架都将部分错误视为只是错误。”

    【讨论】:

      【解决方案2】:

      默认情况下,Core Data 将在对象第一次加载到托管对象上下文时将其作为故障获取。在您要求它们之前,它不会填充属性。如果需要获取请求返回非故障对象,可以使用setReturnsObjectsAsFaults:YES

      【讨论】:

      • 我想你的意思是 setReturnsObjectsAsFaults:NO
      【解决方案3】:

      文档说来自-setPropertiesToFetch: 的值仅在resultType 设置为NSDictionaryResultType 时使用。

      【讨论】:

        猜你喜欢
        • 2018-04-23
        • 1970-01-01
        • 1970-01-01
        • 2013-01-21
        • 2015-08-10
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多