我有一个使用coredata的项目,我打算从我存储的内容中删除它。但我一直有这个错误。

An NSManagedObjectContext cannot delete objects in other contexts.

我看了看苹果公司说的话,从我的判断来看我说的是对的,但还是有些问题没有解决。有什么建议吗?谢谢!
for (UserNumber *info in pinNumberArray) {

        NSSet *time = [[NSSet alloc] initWithSet:info.Times];

        for (ErgTimes *ergTimes in time){

            NSMutableArray *temp = [[NSMutableArray alloc] initWithObjects:ergTimes.Twok, nil];
            NSManagedObject *eventToDelete = [temp objectAtIndex:0];
            [managedObjectContext deleteObject:eventToDelete];
        }
    }

最佳答案

嗯,可能你把你的对象,上下文和线程搞混了。NSManagedObjectContext不是线程安全的。要从上下文中删除对象,您需要先将对象“提取”到上下文中,我猜您的托管对象是由另一个moc提取的。我看不到更多的代码。
然而,有一个相对容易的解决方案。在你的for循环中,改为这样做

for (ErgTimes *ergTimes in time){
    NSMutableArray *temp = [[NSMutableArray alloc] initWithObjects:ergTimes.Twok, nil];
    NSManagedObject *eventToDelete = [managedObjectContext objectWithID:[[temp objectAtIndex:0] objectID]];
    [managedObjectContext deleteObject:eventToDelete];
}

这样做的目的是在moc中获取当前使用的objectid对象,该objectid是线程安全的。

10-04 21:14