如何从核心数据和表视图中删除一行

时间:2013-12-09 09:58:06

标签: ios

我在尝试从核心数据中删除对象时收到错误“NSManagedObjectContext无法删除其他上下文中的对象”。 我在正常核心数据获取后的加载中使用以下代码

    NSFetchedResultsController  *controller = [[NSFetchedResultsController alloc] initWithFetchRequest:fetchRequest managedObjectContext:appDelegate.managedObjectContext sectionNameKeyPath:nil cacheName:nil];
    controller.delegate=self;
    BOOL success = [controller performFetch:&error];


    -(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
     {
     NSManagedObject *managedObject = [controller objectAtIndexPath:indexPath];
     //(Alert view)
     } 

在警报视图中clickedButtonAtIndex函数,我试图从appDelegate.managedObjectContext中删除该特定的托管对象,但是行中出现错误“一个NSManagedObjectContext无法删除其他上下文中的对象”

    [appDelegate.managedObjectContext deleteObject:managedObject];   

我尝试了其他托管对象上下文,

    NSManagedObjectContext *context= [controller managedObjectContext];

但得到同样的错误。 任何人都可以告诉为什么会出现此错误以及从表视图和核心数据中删除特定行的解决方案吗?

2 个答案:

答案 0 :(得分:1)

您正在使用与该对象不同的上下文(正是错误所说的内容),将删除行更改为

[managedObject.managedObjectContext deleteObject:managedObject];

答案 1 :(得分:0)

使用相同的NSManagedContext删除用于获取对象的内容,并在同一个线程中删除。