Мое iOS приложение использует базу данных Realm. Я хочу скопировать или переместить текущий файл базы данных default.realm в новый каталог (расположение группы приложений), чтобы я мог поделиться им с виджетом Today Extension.
Я пробовал, как говорится в этом сообщении ( Как перенести базу данных Realm в группы приложений )
Основной код:
let fileManager = FileManager.default
let originalPath = Realm.Configuration.defaultConfiguration.fileURL!
let appGroupURL = FileManager.default.containerURL(forSecurityApplicationGroupIdentifier: "group.com.myApp")!.appendingPathComponent("default.realm")
do{
try fileManager.replaceItemAt(appGroupURL, withItemAt: originalPath)
}
catch{
print("Error information: \(error)")
}
И я поместил этот код в область миграции Realm внутри didFinishLaunchingWithOptions , как показано ниже, чтобы дать вам более четкое представление, где я использую этот код.
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
var config = Realm.Configuration(
schemaVersion: 1,
migrationBlock: { migration, oldSchemaVersion in
if (oldSchemaVersion < 1) {
let fileManager = FileManager.default
let originalPath = Realm.Configuration.defaultConfiguration.fileURL!
let appGroupURL = FileManager.default.containerURL(forSecurityApplicationGroupIdentifier: "group.com.myApp")!.appendingPathComponent("default.realm")
do{
try fileManager.replaceItemAt(appGroupURL, withItemAt: originalPath)
}
catch{
print("Error information: \(error)")
}
}
}
)
}
Когда я пробую это, моя консоль сообщает, что файл не может быть сохранен.
Error Domain = NSCocoaErrorDomain Code = 512 «Файл« default.realm »не может быть сохранен в папке« 2EEADCEE-F9D9-44A8-BDED-B60A689656A2 ».» UserInfo = {NSFileOriginalItemLocationKey = file: /// Users / jm / Library / Developer / CoreSimulator / Devices / 38334AE3-6648-402E-AC18-8252426002D6 / data / Containers / Shared / AppGroup / 2EEADCEE-F9D9-44A8-BD656D-BD9D9-44A8-BD6D-BD6 default.realm, ......
Я слышал, что копирование / перемещение файла базы данных Realm должно быть выполнено перед открытием файла, связана ли эта ошибка с этим?
Спасибо за Ваша помощь и хорошего дня