iphone - 删除后的核心数据在保存时抛出错误

标签 iphone ios core-data nsmanagedobject nsmanagedobjectcontext

删除后保存时抛出以下错误。 NSManagedObjectContext 无法删除其他上下文中的对象。

我还检查了从中获取数据的 managedobjectcontext 是否与删除数据的 managedobjectcontext 相同。结果证明它们是相等的。你可以看到下面的比较。

    NSManagedObjectContext *managedobjectcontext=[Singleton managedObjectContext];    

    NSArray *allprebuyers=[Fetchsavefromcoredata arrayfromentityresult:@"Buyer"];


    for(int i=0;i<[allprebuyers count];i++)
    {
        Buyer *buyerobj=[allprebuyers objectAtIndex:i];

        NSLog(@"class name : %@",NSStringFromClass([buyerobj class]));

        //object comparison for fetched moc and moc which is deleting, log says Equal.
        if ([[buyerobj managedObjectContext] isEqual:managedobjectcontext]) 
        {
            NSLog(@"Equal");
        }
        else 
        {
            NSLog(@"Not Equal");
        }
        [managedobjectcontext deleteObject:buyerobj];

        NSError *error=nil;

        [managedobjectcontext save:&error];

    }

我一直在努力解决这个问题,我们将不胜感激。

最佳答案

您必须选择删除托管对象。

1) 在拥有上下文中

[object.managedObjectContext deleteObject: object];

2) 在另一个上下文中

[anotherContext deleteObject: [anotherContext objectRegisteredForID: object.objectID]];

如果对象已注册到另一个上下文,则不能删除上下文中的对象。

此外,请注意上下文与线程或队列(主队列或私有(private)队列)相关联。确保从正确的线程/队列访问上下文。

关于iphone - 删除后的核心数据在保存时抛出错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11687537/

相关文章:

ios - UICollectionView insertItemAtIndexPath 不工作

iphone - 为测试用户清除 iOS 应用内购买沙盒中的购买

ios - 使用 Assets 资源获取 Assets 失败,错误为 "null"

objective-c - 从核心数据和多线程中获取数据时的效率

objective-c - NSManagedObjectContext 异步或同步保存更改?

iphone - 如何将 UITableViewController 中选定行的数量传递/发送到另一个类?

html - 网站在 iPhone 的屏幕右侧显示空白

iphone - 视频 iphone 问题 - iphone 3g/3gs 上的 720p?

ios - Swift 核心数据单元测试 : How to avoid EXC_BREAKPOINT

ios - 临时 UIImage 从不清除