2017-10-19 7 views
0

レルム3.0では、プリミティブタイプのリスト(String、Int、...)が導入されています。レルム2.xのオブジェクトのレルム3.xリストの文字列(または他のプライマリタイプ)

プリミティブ型のプロパティを1つしか持たないカスタムオブジェクトの古いリストを、それらの単純なリストに移行したいのですが、レルムの移行ブロックでどうしているのか分かりません。

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"] 
    } 
} 

移行を行うためにどのようにレルム2.0(簡体字)で使用されるどのような

?以下は動作しません。

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

indexedProperties()とこれらの新しいリストの使用については不明です。

答えて

2
あなたは文字列のリストに都市のリストを変換する必要があります

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

インデックスListプロパティがサポートされていません。

関連する問題