【发布时间】:2013-05-03 21:01:07
【问题描述】:
我有这个应用程序,我已经使用 CoreData 创建了一段时间。但是,我最近开始构建数据模型并使用 CoreData。现在我已经这样做了,每当我在模拟器中运行应用程序时,它都会在第一行的 App Delegate / didFinishLaunchingWithOptions 中崩溃:
self.window.rootViewController = self.navigationController;
崩溃是:
Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: 'executeFetchRequest:error: A fetch request must have an entity.'
如果我注释掉那行,它就会运行。奇怪的!目前我还没有在代码中对 CoreData 做任何工作——所以还没有获取。也许有一些系统获取,因为数据模型改变了?我已从模拟器中删除了该应用并进行了清理/构建,但问题仍然存在。
第一个问题:如何修复错误?
第二个问题:这是一个问题,我可以忽略设置rootViewController吗?
第三个问题:为什么现在失败了?
【问题讨论】:
-
某处您正在执行获取请求并且您的 NSManagedObjectContext 可能为空。你在任何地方都使用 NSFetchedResultsController 吗?
-
这很有趣,@MarkM,我还没有想到。我敢打赌,在分配 rootViewController 属性期间发生的一些自动获取中,是一些尚未合并的数据模型更新。我正在学习 CoreData 教程,所以我还不知道如何在应用程序中管理数据模型更新。
-
执行“在工作区中查找”以获取并在每个实例处放置断点。您会发现提取发生的位置。
-
好主意,可惜没有成功。有一个 RootViewController 类在
fetchedResultsController方法中进行一些获取,但在那之后发生了崩溃。 -
fetchedResultsController 与什么实体对话?你肯定有一个 fetch 发生,因为 NSFetchedResultsController 也有一个方法可以在发生更改时更新,你可能想在那里检查。它是用于 tableViewController 的吗?
标签: ios core-data executefetchrequest