F4BEEEA818D88FF30006F70C /* CoreData */ = {
isa = PBXGroup;
children = (
- F4BDEEB11E73FE2000D689AE /* Entity.swift */,
F4E471281E46ECF1009B5AF4 /* CoreDataCore.swift */,
- F4C4A57E201464E300F8B732 /* CoreDataProviderExtension.swift */,
- F4FF44D71FA21BF200039F21 /* CoreDataManager.swift */,
F44AA2661E814A4400EED8BE /* MOCGenerator.swift */,
+ F4BDEEB11E73FE2000D689AE /* Entity.swift */,
+ F4FF44D71FA21BF200039F21 /* CoreDataManager.swift */,
F481D63E1F9105CB007E2CBE /* Entities.swift */,
F4FC3E8D1E4368BB00E41228 /* KCManagedObject.swift */,
+ F4C4A57E201464E300F8B732 /* CoreDataProviderExtension.swift */,
F4F9F8911C6BA26400D0EE76 /* KCD */,
F4F9F8921C6BA28200D0EE76 /* Local */,
F4F9F8931C6BA29500D0EE76 /* Temporary */,
bookmark.order = targetOrder + $0.offset + 1
}
- store.save(errorHandler: store.presentOnMainThread)
+ store.save()
self.bookmarkController.rearrangeObjects()
self.reorderingBoolmarks()
return nil
}
- editorStore.save(errorHandler: editorStore.presentOnMainThread)
+ editorStore.save()
return new
}
var context: NSManagedObjectContext { get }
- func save(errorHandler: (Error) -> Void)
- func save() throws
+ func save(errorHandler: @escaping (Error) -> Void)
}
protocol CoreDataAccessor: CoreDataProvider {
static func oneTimeEditor() -> Self
}
+func presentOnMainThread(_ error: Error) {
+
+ if Thread.isMainThread {
+
+ NSApp.presentError(error)
+
+ } else {
+
+ DispatchQueue.main.sync {
+
+ _ = NSApp.presentError(error)
+ }
+ }
+}
+
// MARK: - Extension
extension CoreDataProvider {
}
}
- func save(errorHandler: (Error) -> Void) {
-
- do {
-
- try save()
-
- } catch {
-
- errorHandler(error)
- }
- }
-
- func save() throws {
+ func save(errorHandler: @escaping (Error) -> Void = presentOnMainThread) {
// parentを辿ってsaveしていく
func propagateSaveAsync(_ context: NSManagedObjectContext) {
} catch {
- Logger.shared.log("Could not save context as \(error)")
+ errorHandler(error)
}
}
}
- var caughtError: Error?
context.performAndWait {
guard context.commitEditing() else {
- caughtError = CoreDataError.couldNotSave("Unable to commit editing before saveing")
+ errorHandler(CoreDataError.couldNotSave("Unable to commit editing before saveing"))
return
}
} catch let error as NSError {
- caughtError = CoreDataError.couldNotSave(error.localizedDescription)
- return
- }
- }
-
- if let error = caughtError {
-
- throw error
- }
- }
-
- func presentOnMainThread(_ error: Error) {
-
- if Thread.isMainThread {
-
- NSApp.presentError(error)
-
- } else {
-
- DispatchQueue.main.sync {
-
- _ = NSApp.presentError(error)
+ errorHandler(CoreDataError.couldNotSave(error.localizedDescription))
}
}
}
let store = TemporaryDataStore.oneTimeEditor()
store.sync {
store.notEnsuredGuardEscaped().forEach(store.delete)
- store.save(errorHandler: store.presentOnMainThread)
+ store.save()
}
Thread.sleep(forTimeInterval: 0.1)
notify()
let store = TemporaryDataStore.oneTimeEditor()
store.sync {
store.guardEscaped().forEach(store.delete)
- store.save(errorHandler: store.presentOnMainThread)
+ store.save()
}
Thread.sleep(forTimeInterval: 0.1)
notify()
let store = TemporaryDataStore.oneTimeEditor()
store.sync {
store.guardEscaped().forEach { $0.ensured = true }
- store.save(errorHandler: store.presentOnMainThread)
+ store.save()
}
Thread.sleep(forTimeInterval: 0.1)
notify()
history.mark = !history.mark
}
- store.save(errorHandler: store.presentOnMainThread)
+ store.save()
}
}
}
finishOperating()
- store.save(errorHandler: store.presentOnMainThread)
+ store.save()
}
func commit() {
let store = ServerDataStore.oneTimeEditor()
store.sync {
store.airBases().forEach(store.delete)
- store.save(errorHandler: store.presentOnMainThread)
+ store.save()
}
AirBaseMapper(apiResponse).commit()