Skip to content

Instantly share code, notes, and snippets.

@gblancogarcia
Last active January 27, 2023 18:00
Show Gist options
  • Star 5 You must be signed in to star a gist
  • Fork 1 You must be signed in to fork a gist
  • Save gblancogarcia/896eef9658492e73bfc4 to your computer and use it in GitHub Desktop.
Save gblancogarcia/896eef9658492e73bfc4 to your computer and use it in GitHub Desktop.
Core Data: preloading an existing SQLite database
import UIKit
import CoreData
@UIApplicationMain
class AppDelegate: UIResponder, UIApplicationDelegate {
var window: UIWindow?
func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool {
return true
}
lazy var applicationDocumentsDirectory: NSURL = {
let urls = NSFileManager.defaultManager().URLsForDirectory(.DocumentDirectory, inDomains: .UserDomainMask)
return urls[urls.count-1]
}()
lazy var managedObjectModel: NSManagedObjectModel = {
let modelURL = NSBundle.mainBundle().URLForResource("Database", withExtension: "momd")!
return NSManagedObjectModel(contentsOfURL: modelURL)!
}()
lazy var persistentStoreCoordinator: NSPersistentStoreCoordinator = {
let coordinator = NSPersistentStoreCoordinator(managedObjectModel: self.managedObjectModel)
let url = self.applicationDocumentsDirectory.URLByAppendingPathComponent("Database.sqlite")
if !NSFileManager.defaultManager().fileExistsAtPath(url.path!) {
let sourceURL = NSBundle.mainBundle().URLForResource("Database", withExtension: "sqlite")!
do {
try NSFileManager.defaultManager().copyItemAtURL(sourceURL, toURL: url)
} catch let error as NSError {
print("Unresolved error: \(error.userInfo)")
}
}
do {
try coordinator.addPersistentStoreWithType(NSSQLiteStoreType, configuration: nil, URL: url, options: nil)
} catch let error as NSError {
print("Unresolved error: \(error.userInfo)")
}
return coordinator
}()
lazy var managedObjectContext: NSManagedObjectContext = {
let coordinator = self.persistentStoreCoordinator
var managedObjectContext = NSManagedObjectContext(concurrencyType: .MainQueueConcurrencyType)
managedObjectContext.persistentStoreCoordinator = coordinator
return managedObjectContext
}()
func saveContext() {
if managedObjectContext.hasChanges {
do {
try managedObjectContext.save()
} catch let error as NSError {
print("Unresolved error: \(error.userInfo)")
}
}
}
}
@xavierchia
Copy link

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment