Я хочу добавить базу данных sqlite, хранящуюся в комплекте приложений, в путь к файлу хранилища данных приложения в Mac OS X, как это сделать с использованием нового языка программирования Swift от Apple?Как я засеваю базу данных в приложении Mac OS X
1
A
ответ
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
}()
Вау, вы нашли ответ на свой вопрос быстро! – zaph