私は、移行とレルムとアプリのバンドルに関するレルムのドキュメントに従っています。
次のコードを使用して、バンドルされた Realm をデフォルトの Realm にコピーしています。これはうまく機能します。
let initialURL = NSBundle.mainBundle().URLForResource("bootstrap_v001", withExtension: "realm")!
let defaultURL = Realm.Configuration.defaultConfiguration.fileURL!
if Realm.Configuration.defaultConfiguration.schemaVersion == 0 {
do {
try NSFileManager.defaultManager().removeItemAtURL(defaultURL)
try NSFileManager.defaultManager().copyItemAtURL(initialURL, toURL: defaultURL)
} catch {
// Handle error here
print("realm delete copy error!!")
}
}
これはすべて正常に機能し、データを含む正しい Realm ファイルを確認できます。ただし、 realm = を使用する場合は試してみてください! Realm()、それが返す結果は常に空です。
AppDelegate.swift の上部に次の宣言があることに注意してください。
import UIKit
import RealmSwift
let uiRealm = try! Realm()
この uiRealm の最初のグローバル宣言が問題を引き起こしているかどうかはわかりません。ローカルバージョンも宣言しようとしましたが、これは修正されていないようです。
Realm ファイルが既に配置されているときにアプリケーションを再実行しても問題ないことに注意してください。