当我尝试在tableView:commitEditingStyle:forRowAtIndexPath:中删除一个NSManageObject时出现异常。这是我的代码的一部分:
- (void)tableView:(..)tableView commitEditingStyle:(..)editingStyle
forRowAtIndexPath:(..)indexPath {
if (editingStyle == UITableViewCellEditingStyleDelete) {
[managedObjectContext deleteObject:
[fetchedResultController objectAtIndexPath:indexPath]];
...
}
}
在deleteObject :(我的本地NSManagedObjectContext的方法)行抛出了异常。这是异常消息:
未捕获的异常'NSObjectInaccessibleException',原因:'具有ID的NSManagedObject:0x3d07a30< x-coredata:// 0D2CC9CB-042B-496D-B3FE-5F1ED64EAB97 / paymentType / p2>已失效。'
我试图首先获取实体对象,然后删除它。该实体看起来没问题,但仍然是删除时的例外:
NSManagedObject *entityToDelete =
[fetchedResultsController objectAtIndexPath:indexPath];
[mangedObjectContext deleteObject:entityToDelete]; // Exception again.
我不确定是否无法删除从fetchedResultsController(NSFetchedResultsController类型)检索的实体对象?如果是这样,是否还有其他方法可以将实体对象删除?
我发现在Apple's Core Data Tutorial for iPhone with events example中,NSArray上有事件实体对象。我不确定是否有必要使用NSArray来保存我的本地实体对象然后用它来删除?
答案 0 :(得分:0)
我想我发现了无法从NSManagedObjectContext中删除实体对象的原因。它是我的UITableViewController类中的invalide NSManagedObjectContext对象。简而言之,我错过了在属性getter中保留上下文对象。我的问题中的代码很好。当获取的结果控制器和上下文对象正常时,删除工作。