gpt4 book ai didi

iphone - 删除对象核心数据

转载 作者:搜寻专家 更新时间:2023-10-30 19:53:37 24 4
gpt4 key购买 nike

我有一个使用 coredata 的项目,我正在尝试从我存储的内容中删除。但我一直收到此错误。

An NSManagedObjectContext cannot delete objects in other contexts.

我查看了 apple 必须说的内容,据我所知,我说的是正确的,但仍有问题。有什么建议么?谢谢!

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];
}

这样做是使用线程安全的 objectID 获取您当前使用的 MOC 中的对象。

关于iphone - 删除对象核心数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6336071/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com