0

我在数据模型中向我的实体添加了一个获取的属性。我没有添加它的谓词。我使用 fetchRequestTemplateForName 检索它,但是在执行它时出现此错误“executeFetchRequest:错误:获取请求必须有一个实体。”

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

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

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

那么我该如何解决呢?

谢谢!

4

2 回答 2

1

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

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

于 2011-08-20T16:33:09.120 回答
0

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

获取的属性实际上只是一个方便的快捷方式,用于在代码中一次又一次地写出冗长的获取请求,以获得您不想保留的结果。首先看看你NSFetchRequest写的代码是否有效,然后将其转移到模型中,这可能是一个很好的过程。

于 2011-08-20T00:46:47.127 回答