Свойство Swift Realm " * " добавлено в последнюю миграцию объектной модели

Я добавил новый атрибут массива в RLMObject и

public class Student: RLMObject {
    dynamic var id = 0
    dynamic var name = ""
    dynamic var resultList = RLMArray(objectClassName:Result.className())
}

public class Result: RLMObject {
}

журнал ошибки:

миграция требуется для типа объекта 'Student' из-за следующего ошибки: - Свойство "resultList" было добавлено к последней объектной модели.

попытка не удалась:

let configuration:RLMRealmConfiguration = RLMRealmConfiguration.defaultConfiguration()

migration.enumerateObjects(Student.className()) { oldObject, newObject in
    newObject!["resultList"] = RLMArray(objectClassName: Result.className())
}

EDIT:

  let configuration:RLMRealmConfiguration = RLMRealmConfiguration.defaultConfiguration()
    print("Realm db current version: (configuration.schemaVersion)")
    configuration.schemaVersion = 1
    configuration.migrationBlock = {(migration:RLMMigration, oldSchemaVersion: UInt64) in
        print("Realm db migration start")
        if oldSchemaVersion < 1 {
            print("Schema version: 1 - Rename fields")
            migration.enumerateObjects(Student.className()) { oldObject, newObject in
                newObject!["creationDate"] = oldObject!["createdAt"]
                newObject!["modifiedDate"] = oldObject!["updatedAt"]
            }
        }
        print("Realm db migration finish")
    }
    RLMRealmConfiguration.setDefaultConfiguration(configuration)
    let realm = RLMRealm.defaultRealm()

устранение:

обновите свою версию до +1

configuration.schemaVersion += 1

1 ответов


вы должны увеличить свой schemaVersion и предоставить migrationBlock на RLMRealmConfiguration. Там вы можете перенести таблицы. Но вам это не нужно в вашем конкретном случае здесь. Добавление свойств может обрабатываться автоматически. Тебе все равно понадобится пустой блок.

let config = RLMRealmConfiguration.defaultConfiguration()
config.schemaVersion = 1
config.migrationBlock = { (migration, oldSchemaVersion) in
    // nothing to do
}
RLMRealmConfiguration.setDefaultConfiguration(config)