我想阻止我所有的后台保存和CoreData更新当我点击我的注销按钮,这样我可以安全地删除所有与删除当前用户数据。我的代码删除CoreData对象停止保存到coredata在后台同时按一个按钮就
static func logoutAction(){
SVProgressHUD.show()
let deviceToken = kSharedUserDefaults.getDeviceToken()
self.perform(#selector(deletecoreData), with: self, afterDelay: 3)
print("Reset All data in userddefaults.")
kSharedUserDefaults.setDeviceToken(token: deviceToken)
SVProgressHUD.dismiss()
kSharedAppDelegate.configureLoginViewController()
}
static func deletecoreData(){
for str in ["JobStatusTransition","JobImages","CustomField","Attribute","Booking","Job","Notification","Person","Status"]{
deleteObjEntity(entity: str)
}
if let bundle = Bundle.main.bundleIdentifier {
UserDefaults.standard.removePersistentDomain(forName: bundle)
}
}
static func deleteObjEntity(entity:String){
let moc = CoreDataHelper.sharedInstance.bgManagedObjectContext
let fetchRequest = NSFetchRequest<NSFetchRequestResult>(entityName: entity)
let result = try? moc.fetch(fetchRequest)
let resultData = result
for object in resultData! {
moc.delete(object as! NSManagedObject)
}
do {
try moc.save()
print("saved!")
} catch let error as NSError {
print("Could not save \(error), \(error.userInfo)")
} catch {
}
}
目前它的时候有任何后台保存到数据库,这些都是我的错误崩溃
CoreData:错误:变异托管对象0x1951ade0(0x19558580)它有后已从其上下文中移除。 2017年6月6日16:37:32.448 WheelTech [2242:256244] CoreData:错误:突变后它已经从它的上下文移除的管理对象0x1951ade0(0x19558580)。 2017年6月6日16:37:32.465 WheelTech [2242:256244] *终止应用程序由于未捕获的异常“NSInvalidArgumentException”,原因:“非法尝试建立关系‘在不同的上下文对象之间的预订’(源=(实体:工作; ID:0x1951ade0; *第一掷调用堆栈: (0x24eb391b 0x2464ee17 0x269a2475 0x269a0fb1 0xa7c00 0xa8338 0x11bb38 0x26a0d4b7 0x1f72493 0x1f6ade1 0x1f73ecf 0x1f737cf 0x24be5b29 0x24be5718) 的libC++ abi.dylib:与类型的未捕获的异常终止NSException
崩溃日志说什么?你如何创建'bgManagedObjectContext'你是否从正确的线程访问它? –