我有一个由NSFetchedResultsController支持的UITableViewController。
我在managedObjectContext
中保存commitEditingStyle
后,在删除行时,我正在遇到SIGABRT。
崩溃然后发生在drawRect:在我的UITableViewCell
中,它试图访问此行的核心数据对象:
[self.document.name drawAtPoint:...]
SIGABRT例外是:
<0x7f883f0 DocumentListControllerCell.m:(108)> CoreData could not fulfill a fault
for '0x7f2a600 <x-coredata://A71C21B4-FE2A-4D1B-A76F-A2AB80E4814C/Document/p16>'
当然问题是CoreData对象已被删除,无法再访问。我想知道为什么仍然会为这个单元调用drawRect
。
任何帮助将不胜感激!
答案 0 :(得分:0)
同时删除行时,将其从核心数据中删除,以便不会绘制冗余数据。 发生了很多次,我从表中删除了一些东西,但不是从我获取数据的地方,这会使我的应用程序崩溃,因为它会在调用endcommit样式时正确绘制表。 所以只需做出改变,一切都应该没问题 的 PK 强>
答案 1 :(得分:0)
我看到一个解决方案,但我想知道这是否是解决此问题的正确方法。
目前的问题是单元格中的drawRect
访问已删除的CoreData“文档”,以获取文档名称并绘制它。我可以将文档名称缓存在setDocument
中的字符串中,而不是直接访问此字符串。
这似乎是正确的方法。有人可以确认我不应该访问drawRect
中的核心数据对象吗?