2010-05-05 49 views
1

当我在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来保存我的本地实体对象,然后将其用于删除?

回答

0

我想我找到了我无法从我的NSManagedObjectContext中删除我的实体对象的原因。它是我的UITableViewController类中的无效的NSManagedObjectContext对象。总之,我错过了将属性获取器中的上下文对象保留下来。我的问题代码很好。当提取的结果控制器和上下文对象正常时,删除就起作用。