Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/98.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/17.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 将领域2.x对象列表迁移到领域3.x字符串列表(或其他主要类型)_Ios_Swift_Migration_Realm - Fatal编程技术网

Ios 将领域2.x对象列表迁移到领域3.x字符串列表(或其他主要类型)

Ios 将领域2.x对象列表迁移到领域3.x字符串列表(或其他主要类型),ios,swift,migration,realm,Ios,Swift,Migration,Realm,领域3.0引入了原语类型列表(字符串、整型等) 我想将只包含一个基元类型属性的自定义对象的旧列表迁移到那些更简单的列表中,但我不明白在领域迁移块期间如何进行迁移 我在Realm2.0中使用的内容(简化): 类映射:对象{ 让城市=列表() } 类别城市:对象{ @objc动态变量名称:String=“” 重写静态func indexedProperties()->[字符串]{ 返回[“名称”] } } 我想在Realm 3.0中使用什么: class Map: Object { let c

领域3.0引入了原语类型列表(字符串、整型等)

我想将只包含一个基元类型属性的自定义对象的旧列表迁移到那些更简单的列表中,但我不明白在领域迁移块期间如何进行迁移

我在Realm2.0中使用的内容(简化):

类映射:对象{
让城市=列表()
}
类别城市:对象{
@objc动态变量名称:String=“”
重写静态func indexedProperties()->[字符串]{
返回[“名称”]
}
}
我想在Realm 3.0中使用什么:

class Map: Object {
  let cities = List<String>()

  override static func indexedProperties() -> [String] {
    return ["cities"]
  }
}
类映射:对象{
让城市=列表()
重写静态func indexedProperties()->[字符串]{
返回[“城市”]
}
}
如何进行迁移?下面的方法不起作用

if oldSchemaVersion < 2 {
  migration.enumerateObjects(ofType: Map.className(), { (oldObject, newObject) in
    newObject!["cities"] = oldObject!["cities"] as! List<String>
  })
}
如果oldSchemaVersion<2{
enumerateObjects(类型:Map.className(),{(oldObject,newObject))位于
新建对象![“城市”]=旧对象![“城市”]作为!列表
})
}

不确定如何使用
索引属性()
以及这些新列表。

您需要将城市列表转换为字符串列表:

if oldSchemaVersion < 2 {
  migration.enumerateObjects(ofType: Map.className(), { (oldObject, newObject) in
    newObject!["cities"] = (oldObject!["cities"] as! List<MigrationObject>).value(forKey: "name")
  })
}
如果oldSchemaVersion<2{
enumerateObjects(类型:Map.className(),{(oldObject,newObject))位于
新对象![“城市”]=(旧对象![“城市”]作为!列表)。值(forKey:“名称”)
})
}

不支持索引
列表
属性。

您需要将城市列表转换为字符串列表:

if oldSchemaVersion < 2 {
  migration.enumerateObjects(ofType: Map.className(), { (oldObject, newObject) in
    newObject!["cities"] = (oldObject!["cities"] as! List<MigrationObject>).value(forKey: "name")
  })
}
如果oldSchemaVersion<2{
enumerateObjects(类型:Map.className(),{(oldObject,newObject))位于
新对象![“城市”]=(旧对象![“城市”]作为!列表)。值(forKey:“名称”)
})
}
不支持索引
列表
属性