cet*_*cet 19 iphone core-data nsmanagedobject
我有两个实体,每个实体都在自己的UITableView部分显示.
我已启用编辑功能,允许用户通过向右滑动来删除行.这适用于第一个实体,但是当我尝试删除第二个实体中的对象时,我收到此错误:
An NSManagedObjectContext cannot delete objects in other contexts
Run Code Online (Sandbox Code Playgroud)
我得到了错误所说的内容,但我看不出它在这里是如何适用的.我使用对上下文的保留引用来创建,获取和删除数据库中的所有对象,因此我确信只有一个上下文.我也没有使用多线程.知道会发生什么吗?
小智 24
您NSManagedObject
从同一实例获取的上下文是否与您用来删除的上下文相同NSManagedObject
?如果没有,您需要:
NSManagedObjectContext
对它的共享引用,以便从您创建或从中获取的相同上下文中删除该对象.如果您没有使用多个线程,那么您只需要[[NSManagedObjectContext alloc] init]
在代码中调用一次.要么
如果你必须使用的两种不同的情况NSManagedObjectContext
,然后拿到objectID
从NSManagedObject
你从第一方面得到的,所以您可以稍后致电:
[context deleteObject:[context objectWithID:aObjectID]];
Run Code Online (Sandbox Code Playgroud)
该NSManagedObjectID
是上下文之间的相同,但NSManagedObject
本身不是.
小智 7
我用这个:
func delete(object: YourManagedObject) {
guard let context = object.managedObjectContext else { return }
if context == self.viewContext {
context.delete(object)
} else {
self.performBackgroundTask { context in
context.delete(object)
}
}
try? self.viewContext.save()
}
Run Code Online (Sandbox Code Playgroud)
基本上,您要删除的对象很可能是由NSPercientContainer的viewContext提供的。因此尝试从私有后台上下文中删除是行不通的。
归档时间: |
|
查看次数: |
9803 次 |
最近记录: |