4

私は Realm を使用してキャッシングを行っていますが、それほど長期間ではありません。データ モデルに変更があった場合でも、スキーマのバージョンを把握したり、移行したりする必要はありません。

では、データ モデルに変更があるたびにクラッシュするのではなく、デフォルトの Realm を吹き飛ばして最初からやり直すことで、アプリが不一致をスマートに処理するにはどうすればよいでしょうか?

前もって感謝します!

4

3 に答える 3

3

Swift 2 で try/catch が導入されて以来、これは私にとって魅力のように機能しています。testRealmFile()起動時にアプリのデリゲートから呼び出すだけで、その後はすべてクールです。

func testRealmFile(){
    do {
        try Realm().objects(Model1)
        try Realm().objects(Model2)
    } catch {
        print("can't access realm, migration needed")
        deleteRealmFile()
    }
}
func deleteRealmFile(){
    if let path = Realm.Configuration.defaultConfiguration.path {
        do{
            try NSFileManager.defaultManager().removeItemAtPath(path)
            print("realm file deleted")
        } catch {
            print("no realm file to delete")
        }
    }
}
于 2016-02-18T18:14:52.063 に答える
0

The simplest way is to check Realm.schemaVersionAtPath(_:) and seeing if that schema version is lower than your current schema version. You can also follow https://github.com/realm/realm-cocoa/issues/1692, which proposes adding a more exact API (one that doesn't require bumping your schema version) allowing you to detect if a migration would be required.

于 2015-05-20T04:24:34.840 に答える