快速需要帮助——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]?'”错误