快速需要帮助——CoreData 错误

Posted

技术标签:

【中文标题】快速需要帮助——CoreData 错误【英文标题】:Need help fast -- CoreData error 【发布时间】:2010-09-08 15:48:05 【问题描述】:

在几个小时后的演示之前迫切需要帮助...应用程序昨晚在我的测试设备上运行良好。今天早上添加了一些数据(像往常一样),现在我在保存操作期间收到此错误:

        Serious application error.  Exception was caught during Core Data change processing:
    *** -[NSCFDictionary setObject:forKey:]: attempt to insert nil value
(key: _ContentChange_OldIndexPathKey) with userInfo (null)

        *** Terminating app due to uncaught exception 'NSInvalidArgumentException',
    reason: '*** -[NSCFDictionary setObject:forKey:]: attempt to insert nil value
(key: _ContentChange_OldIndexPathKey)'

有趣的是,如果我将我的 sqlite 文件下载到我的 Mac 并将其输入到模拟器中,一切都会正常工作。崩溃仅发生在测试设备上。

有什么想法吗?

【问题讨论】:

从表面上看,错误消息看起来相当有说服力。你确定这两个环境之间的一切都是一样的吗? 您正在尝试将nil 插入字典。该值 (userInfo) 来自哪里? 更新:我修复了它,但我不知道为什么。此错误发生在包含 UITableView 和 NSFetchedResultsController 的 UIViewController 中。它通常是我的 NSFetchedResultsController 的委托,并实现表更新的适当方法。我有一种感觉,这是导致问题的方法之一。所以我注释掉了使 ViewController 成为 NSFetchedResultsController 的委托的行,并且一切正常。这意味着某些功能将不起作用(基于模型更改的表格更新),但我可以在演示中使用它。 ed94133:你能在调试器下的设备上运行你的应用程序吗?如果是这样,请查看有关尝试插入的信息。 【参考方案1】:

我也遇到了这个错误。取消 NSFetchedResultsController 委托确实会阻止它崩溃,但不是修复。问题似乎是在 NSFetchRequest 中指定了一个排序键,该键对于某些对象为空。在 NSFetchedResultsController 中进行的某些排序调用不需要空值。

【讨论】:

【参考方案2】:

这是一篇旧文章,但无论如何我都会发表评论:)

我遇到过类似的问题,删除 NSFethedReultController 的缓存解决了这个问题。

[NSFetchedResultsController deleteCacheWithName:<cacheName>];

【讨论】:

以上是关于快速需要帮助——CoreData 错误的主要内容,如果未能解决你的问题,请参考以下文章

从 CoreData 获取数据时出现“'[AnyObject]' 不可转换为 '[Dog]?'”错误

在 Swift 中将 CoreData 保存/同步到 iCloud

ios coredata 会在新版本中更改实体属性导致崩溃

认识CoreData—初识CoreData

CoreData(IOS)多列的唯一约束?

数据导入CoreData期间如何显示progressBar?