2016-02-03 10 views
6

最近新しいブランチを作成し、以上のショットをRealmに与えるようにコードの多くをリファクタリングしようとしました。しかし、これまで私はコードを稼働させる運がなかった。RealmSwift:別のスキーマバージョンですでに開かれているパスのレルム

まず、shared_realm.cppで例外がスローされます。エラーをスローしたコードの行は、次のとおりです。私はこの例外をスキップした場合

if (realm->config().schema_version != config.schema_version && config.schema_version != ObjectStore::NotVersioned) { 
    throw MismatchedConfigException("Realm at path already opened with different schema version."); 
} 

が、それは次のコードの2行目にキャッチ:

class func getAllCategories() -> Results<Category> { 
    let realm = try! Realm() 
    let categories = realm.objects(Category) 

    return categories 
} 

そして、このエラーメッセージがスローされます。

fatal error: 'try!' expression unexpectedly raised an error: Error Domain=io.realm Code=1 "Realm at path already opened with different schema version." UserInfo={NSLocalizedDescription=Realm at path already opened with different schema version., Error Code=1}

私はRealmにとって全く新しいので、助けてください。ドキュメントからの私の理解は、Realm()がデフォルトのデータベースにアクセスする適切な方法であることです。これは現時点での私の目的にとっては問題ありません。最初は私はおそらくレルムが回らなければならないと考えましたが、私はオンラインの例から、これが当てはまるとは思わないことを見ています。

私は、シミュレータを変更し、Xcodeを更新しました。また、このコード行を次のようにコメントアウトしようとしました。

// FIXME - enable schema comparison 
/*if (realm->config().schema != config.schema) { 
    throw MismatchedConfigException("Realm at path already opened with different schema"); 
}*/ 

かなり失われているので、どんな方向にも感謝しています。

+1

レルムのデフォルトコンフィグレーションを設定するには、どこのレルムの「コンフィグレーション」オブジェクトを使用していますか?もしそうなら、ここに投稿してください。さらに、 'Category'オブジェクトの開発変更をたくさんしている場合は、ディスク上のRealmファイルを削除して、Realmで新しいファイルを作成しようとしましたか? – TiM

答えて

1

パスのスキーマバージョンを開いた後で変更することはできないため、パスをsetSchemaVersionで呼び出す前にスキーマを変更する必要があります。

setSchemaVersion(1, realmPath: Realm.defaultPath) { (migration, oldSchemaVersion) -> Void in 
    if oldSchemaVersion < 1 { 
     migration.enumerate(Category.className(), { (oldObject, newObject) -> Void in 
      let constant = oldObject!["constant"] as! String 
      newObject!["constant"] = constant 
     }) 
    } 
} 
1

あなたは既に一度アプリ(ただの推測を構築した後、あなたは、スキーマを変更したため、あなたはまた、既存のレルムをクリアした、アプリを削除し、それを再構築することによって、これを確認することができ、この問題に実行している可能性がありますデータベース)

実際に問題が発生した場合は、この問題を解決するための推奨方法の概要を示す https://realm.io/docs/swift/latest/#migrations を参照する必要があります。

関連する問題