Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 领域迁移:更新多个对象和回退策略?_Ios_Swift_Realm - Fatal编程技术网

Ios 领域迁移:更新多个对象和回退策略?

Ios 领域迁移:更新多个对象和回退策略?,ios,swift,realm,Ios,Swift,Realm,我不知道如何移植多个对象。例如,如何在对象设置和人员上引入字符串“标识符” func configureRealm(){ Realm.Configuration.defaultConfiguration = Realm.Configuration( schemaVersion: 1, migrationBlock: { migration, oldSchemaVersion in migratio

我不知道如何移植多个对象。例如,如何在对象设置和人员上引入字符串“标识符”

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
                    }
                }
        })
    }
func configureRealm(){
Realm.Configuration.defaultConfiguration=Realm.Configuration(
阴谋厌恶:1,
migrationBlock:{migration,oldSchemaVersion in
migration.enumerate(Settings.className()){oldObject,newObject在
如果oldschemaversation<1{
新对象![“标识符”]=nsuid().UUIDString
}
}
})
}

是否可以引入一种通用的回退策略:当迁移失败时,模型应该重置?

在迁移块中,您只需添加对
migration()的调用。为
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
                    }
                }
        })
    }

thx-我试着在块之间用逗号-变得复杂。也许您可以将其添加到文档中?我应该添加什么?如何更新两个对象。这就是我问的原因。但我的答案中已经有了。它更新所有
设置
对象和所有
人员
对象。你需要分别列举每一个对象,对不起,我以为你是来自领域。官方文件应包含这样一个例子。你的答案很完美
do {
   let realm = try Realm()
   ...
} catch {
   let path = RLMRealmConfiguration.defaultRealmPath()
   try! NSFileManager.defaultManager().removeItemAtPath(path)
}