24917


現在野球のデータベースを自作しています。

RealmSwiftに保存するPitcherとBatterのクラスを両方設定して、現在も製作中です。  
その途中、プロパティーの名前を変更したり、変数を追加したりしたところ、下記のようのエラーで立ち、クラッシュするようになってしまいました。

[code]

    fatal error: 'try!' expression unexpectedly raised an error: Error Domain=io.realm Code=0 "Provided schema version 0 is less than last set version 1." UserInfo={NSLocalizedDescription=Provided schema version 0 is less than last set version 1.}: file /Library/Caches/com.apple.xbs/Sources/swiftlang/swiftlang-703.0.18.1/src/swift/stdlib/public/core/ErrorType.swift, line 54
    
[/code]

schemaと書いてあるので、マイグレーション関係のエラーだと思い、SwiftDocsを参考にマイグレーション処理を行いました（下記）。

[code]

        let config = Realm.Configuration(
        schemaVersion: 1,
        migrationBlock: { migration, oldSchemaVersion in
            if (oldSchemaVersion < 1) {
            }
    })
    Realm.Configuration.defaultConfiguration = config
    
[/code]

念のためRealmに保存してあるデータも

[code]

    let realm = try! Realm()
            try! realm.write {
                realm.deleteAll()
    
[/code]

を使って初期化しながら開発をしていますが、クラスが複数になったためなのか？は不明ですが、Realmに書き込むボタンを押すとクラッシュします。  
どこがいけないのか？お教えいただけますか？  
コードはかなり長いため、Uploadはできませが、  
どなたか？お解りになる方がいらっしゃればお教え下さい。  
お願いいたします。

* * *

追伸です。  
マイグレーション処理をスルーすると下記エラーになります。

[code]

    fatal error: 'try!' expression unexpectedly raised an error: Error Domain=io.realm Code=0 "Migration is required due to the following errors: 
    - Property 'tall2' has been added to latest object model." UserInfo={NSLocalizedDescription=Migration is required due to the following errors: 
    - Property 'tall2' has been added to latest object model.}: file /Library/Caches/com.apple.xbs/Sources/swiftlang/swiftlang-703.0.18.1/src/swift/stdlib/public/core/ErrorType.swift, line 54
    
[/code]

'tall2'というのは選手の身長を示すプロパティーです。  
変数の中で一番最後に設定をしました。


CC BY-SA 3.0
2016-05-14T06:51:36.930
24850
2016-05-17T04:47:51.647
2016-05-17T04:47:51.647
5519
13156
question
swift
RealmSwiftのマイグレーションエラーが解決できない

[code]

    "Provided schema version 0 is less than last set version 1."
    
[/code]

上記のエラーメッセージに書いてある通り、最後に設定されたスキーマバージョンは1なので、2以上の値を設定する必要があります。

スキーマ（データ構造）が変わるたびに、古いデータを残すのであればマイグレーションが必要です。その時、スキーマバージョンは必ず前のバージョンより大きい値を指定しなければなりません。

[code]

    "Migration is required due to the following errors: 
    
[/code]

マイグレーション処理を無くしたときに出たという上記のエラーは文字どおり、スキーマ（データ構造）が変わっているのでマイグレーションが必要だというエラーです。マイグレーション処理を書くか、古いファイルを削除してやり直してください。


CC BY-SA 3.0
2016-05-17T03:59:35.483
24917
2016-05-17T03:59:35.483
5519
24850
answer