2011-08-19 74 views
0

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

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

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

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

那么我该如何解决它?

谢谢!

+0

,可能这就是问题所在。 – Robin

回答

0

我假设你在Xcode模型编辑器创建了获取财产,而不是编程。你需要填写谓词,否则没有什么可取的。因此,NSFetchRequest返回为nil

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

1

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

但后来我的问题是为什么我们需要获取的财产,因为我们已经有读取请求?我知道苹果的文件说,类似“撷取的特性代表弱,单向关系。”但我仍然感到困惑B/C获取请求似乎更直接。

一个fetchrequest对象应该设置一个实体上
相关问题