2017-10-19 113 views
0

Realm 3.0引入了基本类型列表(String,Int,...)。将Realm 2.x对象列表迁移到Realm 3.x String(或其他主类型)列表

我想将只包含原始类型的一个属性的自定义对象的旧列表迁移到这些更简单的列表,但我不明白在Realm迁移块中的方式。

我的境界2.0用什么(简体):

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

class City: Object { 
    @objc dynamic var name: String = "" 

    override static func indexedProperties() -> [String] { 
    return ["name"] 
    } 
} 

我想在哪些领域3.0使用方法:

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

    override static func indexedProperties() -> [String] { 
    return ["cities"] 
    } 
} 

如何进行迁移?以下不起作用。

if oldSchemaVersion < 2 { 
    migration.enumerateObjects(ofType: Map.className(), { (oldObject, newObject) in 
    newObject!["cities"] = oldObject!["cities"] as! List<String> 
    }) 
} 

不确定使用indexedProperties()以及这些新列表。不支持

if oldSchemaVersion < 2 { 
    migration.enumerateObjects(ofType: Map.className(), { (oldObject, newObject) in 
    newObject!["cities"] = (oldObject!["cities"] as! List<MigrationObject>).value(forKey: "name") 
    }) 
} 

索引List性质:

回答

2

您需要的城市列表转换为字符串列表。