Skip to content

Instantly share code, notes, and snippets.

@ShaneQi
Last active September 1, 2017 01:48
Show Gist options
  • Save ShaneQi/37edf6754bb19c48d167bc39fdff618e to your computer and use it in GitHub Desktop.
Save ShaneQi/37edf6754bb19c48d167bc39fdff618e to your computer and use it in GitHub Desktop.
class LocalDatabase {
private let pathUrl: URL
let persistentStoreCoordinator: NSPersistentStoreCoordinator
private init(fileName: String) {
pathUrl = FileManager.default.urls(for: .documentDirectory, in: .userDomainMask).last!
.appendingPathComponent(fileName + ".sqlite")
guard let model = NSManagedObjectModel.mergedModel(from: [Bundle.main])
else { fatalError() }
persistentStoreCoordinator = NSPersistentStoreCoordinator(managedObjectModel: model)
do {
try persistentStoreCoordinator.addPersistentStore(
ofType: NSSQLiteStoreType,
configurationName: nil,
at: pathUrl,
options: nil)
} catch {
try? FileManager.default.removeItem(at: pathUrl)
fatalError()
}
context = NSManagedObjectContext(concurrencyType: .mainQueueConcurrencyType)
context.persistentStoreCoordinator = persistentStoreCoordinator
}
let context: NSManagedObjectContext
func reset() {
try? FileManager.default.removeItem(at: pathUrl)
fatalError()
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment