2 // CoreDataManager.swift
5 // Created by Hori,Masaki on 2017/02/05.
6 // Copyright © 2017年 Hori,Masaki. All rights reserved.
11 struct CoreDataConfiguration {
15 let options: [AnyHashable: Any]
18 // try remake data file, if model file modified.
21 private static let defaultOptions: [AnyHashable: Any] = [
22 NSMigratePersistentStoresAutomaticallyOption: true,
23 NSInferMappingModelAutomaticallyOption: true
26 init(_ modelName: String,
27 fileName: String? = nil,
28 options: [AnyHashable: Any] = defaultOptions,
29 type: String = NSSQLiteStoreType,
30 tryRemake: Bool = false) {
32 self.modelName = modelName
33 self.fileName = fileName ?? "\(modelName).storedata"
34 self.options = options
36 self.tryRemake = tryRemake
42 let config: CoreDataConfiguration
43 let parentContext: NSManagedObjectContext
44 private let model: NSManagedObjectModel
45 private let coordinator: NSPersistentStoreCoordinator
47 init(_ config: CoreDataConfiguration) {
53 let generator = MOCGenerator(config)
54 (model, coordinator, parentContext) = try generator.genarate()
58 NSApplication.shared.presentError(error)
59 fatalError("CoreDataCore: can not initialize. \(error)")
63 func editorContext() -> NSManagedObjectContext {
65 let moc = NSManagedObjectContext(concurrencyType: .privateQueueConcurrencyType)
66 moc.parent = parentContext