【发布时间】:2011-07-14 08:14:57
【问题描述】:
- 在我的简单实验中,fetchedResultsController 似乎没有返回错误对象。 fetchedResultsController 是否有可能为特定的索引路径返回错误的 Core Data 对象?
- 下面的示例代码在主线程上运行。假设在“A 点”,后台线程删除并保存到持久存储区,该对象刚刚由获取的结果控制器返回。现在,当我们尝试访问
dataObject上的属性时,我们会崩溃,因为由于数据已从持久存储中删除,因此无法完成故障。 - 我看到的一件事是关系更容易出错。因此,在“A 点”,可以说父对象已从持久存储中删除。然后,当尝试访问父级上的 name 属性时,将发生错误,因为无法完成故障。
- 防止此类问题的最佳方法是什么?
示例代码:
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
UITableViewCell *cell = code_for_cell_reuse_here;
PersonModelObject *dataObject = (PersonModelObject *)[self.fetchedResultsController objectAtIndexPath:indexPath];
/* Point A */
cell.textLabel.text = dataObject.name;
cell.detailTextLabel.text = dataObject.parent.name;
return cell;
}
【问题讨论】: