Iphone UITableViewController在删除行时崩溃,因为单元格正在绘制和访问核心数据
我有一个由NSFetchedResultsController支持的UITableViewController 在Iphone UITableViewController在删除行时崩溃,因为单元格正在绘制和访问核心数据,iphone,uitableview,Iphone,Uitableview,我有一个由NSFetchedResultsController支持的UITableViewController 在committeditingstyle中保存managedObjectContext后,我当前在删除行时遇到SIGABRT 然后在drawRect中发生崩溃:在myUITableViewCell中,它尝试访问此行的核心数据对象: [self.document.name drawAtPoint:...] SIGABRT例外情况是: <0x7f883f0 DocumentList
committeditingstyle
中保存managedObjectContext
后,我当前在删除行时遇到SIGABRT
然后在drawRect中发生崩溃:在myUITableViewCell
中,它尝试访问此行的核心数据对象:
[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无法实现故障
对于“0x7f2a600”
当然,问题是CoreData对象已被删除,无法再访问。我想知道为什么这个单元格仍然调用drawRect
任何帮助都将不胜感激 删除行时,也要同时从核心数据中删除该行,以便不存在正在绘制的冗余数据。 在我身上发生过很多次,我从表中删除了一些内容,但没有从提取数据的位置删除,这会使我的应用程序崩溃,因为调用endcommit样式时,它会正确地绘制表。 所以只要做出这些改变,一切都会好起来的
PK我看到了一个解决方案,但我想知道它是否是解决此问题的正确方法 当前的问题是单元格中的
drawRect
访问已删除的CoreData“document”,以获取文档名称并绘制它。我可以将文档名缓存在setDocument
中的字符串中,直接访问该字符串,而不必这样做
看来这是正确的方法。有人能确认我不应该访问
drawRect
中的核心数据对象吗?我确实从核心数据中删除:[self.managedObjectContext deleteObject:doc]代码>然后[self.managedObjectContext保存:&错误]代码>。完成此操作后,NSFetchedResultsController会通知UITableViewController,后者会依次删除该行。