サイトアイコン 演劇とかの感想文ブログ

[swift]Realmで、試行錯誤中のmigrationの回避

■Realm試行錯誤中!

Swiftのデータ管理システムであるRealm(レアム)を導入して色々試行錯誤中です。

ドキュメントをみつつ、演劇感想文リンクの為のデータとして、劇団、公演、キャスト、劇場、劇評といったデータをモデル化して、関係をプログラミングしていっています。

非常にわかりやすいシステムで、データベースを使っているという感覚をあまり持たなくても、モデル化ができそうな感触を感じつつ、色々悪戦苦闘をしています。

■Migrationが面倒!

その際に、実は結構煩わしいのが、モデルクラスのプロパティの増減を行うと、Migrationが必要になること。ちょっとプロパティを追加すると以下のようなExceptionがThrowされます。

fatal error: 'try!' expression unexpectedly raised an error: Error Domain=io.realm Code=10 "Migration is required due to the following errors:

 

勿論、きちんとした開発に入ったり、アプリをリリースしてからのデータベースの改変には、間違いなくMigrationが必要になるのは理解できるので、この仕様もあながち理解できないわけではないのですが、色々データを入れたり、そのデータの抽出のテストをしている時には、少々面倒です。

 

カンタンに、モデルクラスの定義を初期化できる方法はないものかと探しまわったのですが、なかなか見当たらず。

■メモリー展開の設定で、マイグレーションループから開放。

結局、Realmのデータベースファイルをメモリ上に展開することで、マイグレーション地獄から開放されることになりました。
以下のようにコードを書き換えました。

//    let realm = try! Realm()
    let config2 = Realm.Configuration(inMemoryIdentifier: "inMemory")
    let realm = try! Realm(configuration:config2)

勿論、データは保存されないので、毎度データのインサートから処理がはじまるのですが、データの持ち方がまだ確定でないうちは、こっちのやり方でしばらく色々試してみようと思います。

[Swift/Realm関連の投稿は以下]

[swift]RealmSwiftインストール後、linker command failed…が出たら。

 

モバイルバージョンを終了