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中的对象,该对象是线程安全的.
| 归档时间: |
|
| 查看次数: |
10629 次 |
| 最近记录: |