2015-10-22 5 views

ответ

0

Я был в состоянии понять это, поэтому я думал, что опубликую его, чтобы другие слышали.

Seed DB для Mac OS X Применение с Swift из Application Bundle:

Создать функцию для обработки проверки, если база данных уже существует или нет, то звонить, если из NSPersistentStoreCoordinator, «DBName» это имя вашего база данных:

func openDB() 
{ 

    let storePath = applicationDocumentsDirectory.URLByAppendingPathComponent(“DBName.sqlite").path 
    let dataPath = NSBundle.mainBundle().pathForResource(“DBName", ofType: "sqlite") 
    //let testPath = storePath.path 
    //let testPath2 = storePath 
    if !NSFileManager.defaultManager().fileExistsAtPath(storePath!) 
    { 
     do 
     { 
      try NSFileManager.defaultManager().copyItemAtPath(dataPath!, toPath: storePath!) 
     } // end do 
     catch 
     { 
      NSLog("Error copying database file") 
     } // end catch 
    } // end if 
} // end openDB 

Я называю это в NSPersistentStoreCoordinator так это только вызывается один раз

lazy var persistentStoreCoordinator: NSPersistentStoreCoordinator = { 

persiste nt для приложения. Эта реализация создает и возвращает координатора, добавив к нему хранилище для приложения. Это свойство является необязательным, поскольку существуют законные условия ошибки, которые могут привести к сбою в создании хранилища.

// Create the coordinator and store 
    self.openDB() 
    let coordinator = NSPersistentStoreCoordinator(managedObjectModel: self.managedObjectModel) 
    let storeURL = self.applicationDocumentsDirectory.URLByAppendingPathComponent(storeFilename) 
    var failureReason = "There was an error creating or loading the application's saved data." 
    do 
    { 
     //try coordinator.addPersistentStoreWithType(NSSQLiteStoreType, configuration: nil, URL: storeURL, options: nil) 
     try coordinator.addPersistentStoreWithType(NSSQLiteStoreType, configuration: nil, URL: storeURL, options: [NSMigratePersistentStoresAutomaticallyOption: true, 
      NSInferMappingModelAutomaticallyOption: true]) 
    } 
    catch 
    { 
     // Report any error we got. 
     var dict = [String: AnyObject]() 
     dict[NSLocalizedDescriptionKey] = "Failed to initialize the application's saved data" 
     dict[NSLocalizedFailureReasonErrorKey] = failureReason 

     dict[NSUnderlyingErrorKey] = error as NSError 
     let wrappedError = NSError(domain: domainName, code: 9999, userInfo: dict) 
     // Replace this with code to handle the error appropriately. 
     // abort() causes the application to generate a crash log and terminate. You should not use this function in a shipping application, although it may be useful during development. 
     NSLog("Unresolved error \(wrappedError), \(wrappedError.userInfo)") 
     abort() 
    } 

    return coordinator 
    }() 
+0

Вау, вы нашли ответ на свой вопрос быстро! – zaph