删除对象Coredata

Jam*_*nay 3 iphone xcode core-data objective-c

我有一个使用coredata的项目,我正在努力删除我存储的内容.但我一直得到这个错误.

An NSManagedObjectContext cannot delete objects in other contexts.
Run Code Online (Sandbox Code Playgroud)

我看着苹果必须说什么,从我能说出来我知道它是正确的,但有些东西仍然没有.有什么建议?谢谢!

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];
        }
    }  
Run Code Online (Sandbox Code Playgroud)

Dan*_*rpe 11

好吧,你可能已经将对象,上下文和线程混淆了.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];
}
Run Code Online (Sandbox Code Playgroud)

这样做是使用其对象ID获取当前正在使用的MOC中的对象,该对象是线程安全的.