24906


当方、RealmSwiftを使ってアプリを作っております。  
この程、RealmSwiftが0.102になり、マイグレーション処理が変更になったそうですね？

そこで質問です。  
マイグレーションが必要な場合に、Realmファイルを削除する具体的な方法を教えていただきたいです。  
`deleteRealmIfMigrationNeeded`のプロパティをどう使えば、開発途中の不要なRealmファイルを削除できますか？


CC BY-SA 3.0
2016-05-16T10:17:58.930
24905
2016-05-16T10:39:49.067
2016-05-16T10:31:08.427
5519
13156
question
swift realm
RealmSwiftのマイグレーションについて


> RealmSwiftが0.102になり、マイグレーション処理が変更になったそうですね？

マイグレーション処理の基本はまったく変わっていません。単に小さな改善が入っただけです。  
Realmには日本語のドキュメントも用意されていますので、まずドキュメントに目を通されることをおすすめします。

<https://realm.io/jp/docs/swift/latest/#section-40>

バージョン0.102から追加された`deleteRealmIfMigrationNeeded`を`true`に設定することで、マイグレーションが必要でかつマイグレーションが行われない場合に、エラーを出す代わりに自動的に古いファイルを削除して新しいデータ定義を用いて作り直してくれるようになりました。

`deleteRealmIfMigrationNeeded`は`Realm.Configuration`のプロパティなので、使用するにはこの値を`true`にして`Configuration`オブジェクトを作成し、Realmインスタンスを作成する際に、この`Configuration`オブジェクトを渡します。

[code]

    let config = Realm.Configuration(deleteRealmIfMigrationNeeded: true)
    let realm = try! Realm(configuration: config)
    
[/code]

Realmをインスタンス化している場所すべてで同様にする必要がありますが、`defaultConfiguration`として設定すると、それ以降は、いちいち`Configuration`オブジェクトを渡さなくても`defaultConfiguration`に設定したオブジェクトが使用されるようになり便利です。

[code]

    let config = Realm.Configuration(deleteRealmIfMigrationNeeded: true)
    Realm.Configuration.defaultConfiguration = config
    
    let realm = try! Realm()
    
[/code]


CC BY-SA 3.0
2016-05-16T10:39:49.067
24906
2016-05-16T10:39:49.067
5519
24905
answer