我在我的应用程序中订阅和取消订阅存在问题,用户在单击订阅时将发送服务器调用并从服务器下载数据并存储在db中。同时,如果用户点击取消订阅按钮,我必须删除db中的相同数据。我在尝试从不同的上下文中访问对象时遇到错误。
我想知道在并发中是否有办法可以在私有上下文中删除对象[取消订阅过程],然后在订阅过程完成后保存更改。
我无法以这种方式删除对象,有人可以告诉我哪里出错了吗?
func deleteStreamEntityInPrivateContext(_ id: Int){
privateContext = NSManagedObjectContext(concurrencyType: .privateQueueConcurrencyType)
privateContext?.parent = CoreDataService.sharedInstance.managedObjectContext
privateContext?.perform {
if let stream = self.getStreamEntity(id){
let managedObjectContext = CoreDataService.sharedInstance.managedObjectContext
let streamID = managedObjectContext.object(with: stream.objectID)
debugPrint(streamID, stream.id)
self.privateContext?.delete((self.privateContext?.object(with: stream.objectID))!)
}
}
}
func saveStreamEntityInPrivateContext(){
if let privateContext = privateContext{
if privateContext.hasChanges{
do{
try privateContext.save()
if CoreDataService.sharedInstance.managedObjectContext.hasChanges{
CoreDataService.sharedInstance.saveContext()
}
}catch{
let nserror = error as NSError
NSLog("Unresolved error \(nserror), \(nserror.userInfo)")
}
}
}
}