存储的NSFetchRequest返回错误“获取请求必须具有实体”

时间:2011-08-19 15:19:46

标签: core-data nsfetchrequest fetched-property

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

但是我怎么会得到这个错误。那个获取的属性不是我的实体的属性吗?

所以我进一步调试了这个问题并发现它是因为检索到的NSFetchRequest == nil

[[self managedObjectModel] fetchRequestTemplateForName:@“somename”];

那我该如何解决呢?

谢谢!

2 个答案:

答案 0 :(得分:1)

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

但我的问题是,为什么我们需要获取属性,因为我们已经有了获取请求?我知道苹果文件说“被提取的属性代表弱的单向关系”。但我仍觉得困惑b / c获取请求似乎更直接。

答案 1 :(得分:0)

我假设您在Xcode模型编辑器中创建了获取的属性,而不是以编程方式创建。您需要填写谓词,否则无需获取。因此,NSFetchRequest会以nil的形式返回。

获取的属性实际上只是一个方便的快捷方式,用于在代码时间内写出冗长的提取请求,并再次提供您不想持久的结果。也许这是一个很好的过程,首先看看您的NSFetchRequest代码是否有效,然后将其传输到模型。