0

Android でこれを実現する方法はありますが、iOS のアプローチにはまだ戸惑っています。新しい更新があるたびに移行を行いたくないので、そうであれば最初からやり直すことを好みます。

これに関連するこの質問を見つけました

このコードは移行にのみ使用できますか?

// Notice setSchemaVersion is set to 1, this is always set manually. It must be
// higher than the previous version (oldSchemaVersion) or an RLMException is thrown
[RLMRealm setSchemaVersion:1
        forRealmAtPath:[RLMRealm defaultRealmPath]
    withMigrationBlock:^(RLMMigration *migration, uint64_t oldSchemaVersion) {
   // We haven’t migrated anything yet, so oldSchemaVersion == 0
    if (oldSchemaVersion < 1) {
    // Nothing to do!
    // Realm will automatically detect new properties and removed properties
    // And will update the schema on disk automatically
  }
}];
4

1 に答える 1

0

はい、これは移行にのみ使用できます。公式ドキュメントから:

+[RLMRealm setSchemaVersion:forRealmAtPath:withMigrationBlock:] を呼び出して、移行と関連するスキーマ バージョンを定義します。移行ブロックは、データ モデルを以前のスキーマから新しいスキーマに変換するためのすべてのロジックを提供します。+[RLMRealm setSchemaVersion:forRealmAtPath:withMigrationBlock:] を呼び出した後、移行が必要なレルムは、提供された移行ブロックを自動的に適用し、提供されたバージョンに更新されます。

移行の詳細を読む

ただし、レルムを削除して、代わりに新しいパスに新しいレルムを作成することもできます。したがって、UserDefaults にバージョン番号を保持し、データ モデルが変更されるたびにその番号を更新します。それが機能するかどうかはわかりません。ドキュメントから:

+[RLMRealm setDefaultRealmPath:] を使用して、デフォルト レルムのカスタム パスを設定することもできます。これは、アプリをテストするとき、または iOS 8 共有コンテナー内のアプリ間でレルムを共有するときに特に役立ちます。

レルムについてもっと読む

于 2015-08-02T14:52:30.020 に答える