在事件tableView删除NSManageObject:commitEditingStyle:forRowAtIndexPath:
当我在tableView事件中尝试删除一个NSManageObject时发生异常:commitEditingStyle:forRowAtIndexPath :.这里是我的代码部分:(我本地的NSManagedObjectContext的方法):在事件tableView删除NSManageObject:commitEditingStyle:forRowAtIndexPath:
- (void)tableView:(..)tableView commitEditingStyle:(..)editingStyle
forRowAtIndexPath:(..)indexPath {
if (editingStyle == UITableViewCellEditingStyleDelete) {
[managedObjectContext deleteObject:
[fetchedResultController objectAtIndexPath:indexPath]];
...
}
}
唯一的例外是在DeleteObject的线抛出。这是异常消息:
未捕获的异常 'NSObjectInaccessibleException',原因:“的NSManagedObject与ID: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来保存我的本地实体对象,然后将其用于删除?
我想我找到了我无法从我的NSManagedObjectContext中删除我的实体对象的原因。它是我的UITableViewController类中的无效的NSManagedObjectContext对象。总之,我错过了将属性获取器中的上下文对象保留下来。我的问题代码很好。当提取的结果控制器和上下文对象正常时,删除就起作用。