【问题标题】:Stored NSFetchRequest returns error "A fetch request must have an entity"存储的 NSFetchRequest 返回错误“获取请求必须具有实体”
【发布时间】:2011-08-19 15:19:46
【问题描述】:

我在数据模型中向我的实体添加了一个获取的属性。我没有添加它的谓词。我使用 fetchRequestTemplateForName 检索它,但是在执行它时出现此错误“executeFetchRequest:error: A fetch request must have an entity.”

但是我怎么会得到这个错误。那不是我实体的财产吗?

于是我进一步调试问题,发现是因为检索到的NSFetchRequest == nil

[[self managedObjectModel] fetchRequestTemplateForName:@"somename"];

那我该如何解决呢?

谢谢!

【问题讨论】:

  • 在 fetchrequest 对象上,您应该设置一个实体,这可能是问题所在。

标签: core-data nsfetchrequest fetched-property


【解决方案1】:

感谢您回答我的问题。我按照您的建议添加了谓词,但 NSFetchRequest 仍然返回 nil。然后我突然意识到我实际上添加了 Fetched Property 而不是 Fetch Request 到我的实体中,这就是 fetchRequestTemplateForName 返回 nil 的原因。所以我添加了获取请求(在编辑器菜单中有“添加获取请求”和“添加获取属性”菜单项)并解决了问题!很抱歉造成混乱:$。

但是我的问题是为什么我们需要 fetched 属性,因为我们已经有 fetch 请求?我知道苹果文档说过类似“获取的属性代表弱的单向关系”。但我仍然感到困惑 b/c fetch request 似乎更简单。

【讨论】:

    【解决方案2】:

    我假设您在 Xcode 模型编辑器中创建了 fetched 属性,而不是以编程方式。你需要填写谓词,否则没有什么可取的。因此,NSFetchRequestnil 的形式返回。

    一个 fetched 属性实际上只是一个方便的快捷方式,用于在代码中一次又一次地写出冗长的 fetch 请求以获得您不希望保留的结果。或许先看看你用代码写的NSFetchRequest是否有效,然后再传给模型是个不错的过程。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-12-03
      • 1970-01-01
      • 2011-05-08
      • 1970-01-01
      • 2012-12-18
      • 1970-01-01
      • 2018-10-26
      • 1970-01-01
      相关资源
      最近更新 更多