从核心数据中删除对象后,我在主队列中保存上下文。 所以我正在检查主线程与否,如果没有在主线程中执行dispatch_async。 使用Concurrecny类型创建NSManagedObjectContext是ConfinementConcurrencyType
用于保存上下文的代码:
mail.EmailMessage(sender='John Doe <no-reply@my-custom-domain.com',
Crashlytics的崩溃报告:
public static func saveContext(managedContext : NSManagedObjectContext){
AppDelegate.getAppDelegate().log.debug("saveContext()")
if NSThread.isMainThread() == true{
do {
try managedContext.save()
}catch let error as NSError{
AppDelegate.getAppDelegate().log.error("Could not save \(error), \(error.userInfo)")
}
}else{
dispatch_async(dispatch_get_main_queue()) { () -> Void in
do {
try managedContext.save()
}catch let error as NSError{
AppDelegate.getAppDelegate().log.error("Could not save \(error), \(error.userInfo)")
}
}
}
}
答案 0 :(得分:0)
您不应使用系统的线程API,而应使用Core Data自己的线程API。
context.performBlockAndWait() { // or performBloc() to return immediately
do { try context.save() } catch {}
}