2015-10-31 2 views
1

Я не понимаю, как переносить несколько объектов. Например, как мне ввести строковый «идентификатор» в объекте «Настройки и лицо»?Realm Migration: обновление нескольких объектов и резервная стратегия?

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

ТНХ - Я пробовал это с запятой между блоками - сложной. Возможно, вы можете добавить это в свою документацию? – netshark1000

+0

Что именно я должен добавить? – joern

+0

Как обновить два объекта. Вот почему я спрашивал. – netshark1000

Смежные вопросы