Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/iphone/35.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Iphone UITableViewController在删除行时崩溃,因为单元格正在绘制和访问核心数据_Iphone_Uitableview - Fatal编程技术网

Iphone UITableViewController在删除行时崩溃,因为单元格正在绘制和访问核心数据

Iphone UITableViewController在删除行时崩溃,因为单元格正在绘制和访问核心数据,iphone,uitableview,Iphone,Uitableview,我有一个由NSFetchedResultsController支持的UITableViewController 在committeditingstyle中保存managedObjectContext后,我当前在删除行时遇到SIGABRT 然后在drawRect中发生崩溃:在myUITableViewCell中,它尝试访问此行的核心数据对象: [self.document.name drawAtPoint:...] SIGABRT例外情况是: <0x7f883f0 DocumentList

我有一个由NSFetchedResultsController支持的UITableViewController

committeditingstyle
中保存
managedObjectContext
后,我当前在删除行时遇到SIGABRT

然后在drawRect中发生崩溃:在my
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无法实现故障
对于“0x7f2a600”
当然,问题是CoreData对象已被删除,无法再访问。我想知道为什么这个单元格仍然调用
drawRect


任何帮助都将不胜感激

删除行时,也要同时从核心数据中删除该行,以便不存在正在绘制的冗余数据。 在我身上发生过很多次,我从表中删除了一些内容,但没有从提取数据的位置删除,这会使我的应用程序崩溃,因为调用endcommit样式时,它会正确地绘制表。 所以只要做出这些改变,一切都会好起来的
PK

我看到了一个解决方案,但我想知道它是否是解决此问题的正确方法

当前的问题是单元格中的
drawRect
访问已删除的CoreData“document”,以获取文档名称并绘制它。我可以将文档名缓存在
setDocument
中的字符串中,直接访问该字符串,而不必这样做


看来这是正确的方法。有人能确认我不应该访问
drawRect
中的核心数据对象吗?

我确实从核心数据中删除:
[self.managedObjectContext deleteObject:doc]然后
[self.managedObjectContext保存:&错误]。完成此操作后,NSFetchedResultsController会通知UITableViewController,后者会依次删除该行。