Ранее я создал приложение iOS, которое сохраняет данные в базе данных. Я скопировал данные из приложения и теперь у меня есть три файла:
MyData.sqlite, MyData.sqlite-shm и MyData.sqlite-wal
Я пытаюсь создать командную строку Утилита в Xcode, которая будет получать доступ к данным из этих баз данных. Я добавил CoreData в проект служебной программы командной строки и смог создать новую базу данных. Однако я хочу загрузить базу данных, которую я экспортировал из приложения.
Я нашел от кого-то предыдущий вопрос: Перенос базы данных Core Data из одного приложения в другое
Однако их ответ не работает для меня. Эта строка:
let storeUrl = FileManager.default.urls(for: .documentDirectory, in:.userDomainMask).first!.appendingPathComponent(databaseName + ".sqlite")
выдает эту ошибку:
expression produced error: error: /var/folders/cc/r_54b90515v_m6t41vg9lg000000gp/T/expr14-6084fa..swift:1:65: error: use of undeclared type 'Foundation'
Swift._DebuggerSupport.stringForPrintObject(Swift.UnsafePointer<Foundation.URL>(bitPattern: 0x1004fc2f0)!.pointee)
Мне кажется, что мне не хватает простого ответа на эту проблему. Есть ли простой способ перенести информацию из базы данных Core Data из одного приложения в другое?
РЕДАКТИРОВАТЬ: Благодаря Лу Франко ниже, я добился определенного прогресса. Теперь у меня есть:
var persistentContainer: NSPersistentContainer = {
let container = NSPersistentContainer(name: "MyData")
let storeUrl = URL(fileURLWithPath: "/Path/To/Data/MyData.sqlite")
container.persistentStoreDescriptions = [NSPersistentStoreDescription(url: storeUrl)]
container.loadPersistentStores(completionHandler: { (storeDescription, error) in
if let error = error as NSError? {
fatalError("Unresolved error \(error), \(error.userInfo)")
}
})
return container
}()
Однако теперь я получаю целую кучу выходных данных, суммированных к "Persistent store migration failed, missing mapping model."
Я надеялся, установив контейнер с текущими Базовыми данными изначально, я мог как-то позволить программа знает, чего ожидать от того, что она загружает (модель данных та же самая), но, похоже, что-то не получается. Я заметил в сообщениях об ошибках:
NSInferMappingModelAutomaticallyOption = 1;
NSMigratePersistentStoresAutomaticallyOption = 1;
Есть ли способ заставить программу знать, что загружаемые данные соответствуют модели Core Data, которую я уже установил? Просто нужно загрузить данные из файла.