2015-10-31 56 views
1

我不明白如何遷移多個對象。例如,如何在對象Settings和Person中引入字符串「標識符」?領域遷移:更新多個對象和備用策略?

func configureRealm(){ 

     Realm.Configuration.defaultConfiguration = Realm.Configuration(
      schemaVersion: 1, 
      migrationBlock: { migration, oldSchemaVersion in 

       migration.enumerate(Settings.className()) { oldObject, newObject in 

        if oldSchemaVersion < 1 { 
         newObject!["identifier"] = NSUUID().UUIDString 
        } 
       } 
     }) 
    } 

是否有可能引入一個通用的回退策略:當遷移失敗時,模型應該重置?

回答

3

在遷移塊,你可以再補充一個電話Migration().enumerate(_:_:)Person對象:

func configureRealm(){ 

     Realm.Configuration.defaultConfiguration = Realm.Configuration(
      schemaVersion: 1, 
      migrationBlock: { migration, oldSchemaVersion in 

       migration.enumerate(Settings.className()) { oldObject, newObject in 
        if oldSchemaVersion < 1 { 
         newObject!["identifier"] = NSUUID().UUIDString 
        } 
       } 
       migration.enumerate(Person.className()) { oldObject, newObject in 
        if oldSchemaVersion < 1 { 
         // change whatever needs to be changed 
        } 
       } 
     }) 
    } 

或者你可以只刪除境界文件時let realm = try Realm()拋出一個錯誤:

do { 
    let realm = try Realm() 
    ... 
} catch { 
    let path = RLMRealmConfiguration.defaultRealmPath() 
    try! NSFileManager.defaultManager().removeItemAtPath(path) 
} 
+0

THX - 我用塊之間的逗號試了一下 - 變得複雜了。也許你可以將它添加到你的文檔? – netshark1000

+0

我應該添加什麼? – joern

+0

如何更新兩個對象。這就是我問的原因。 – netshark1000