2017-06-27 11 views
1

今週ObjectMapperを使い始めました.JSONを2つのCustomClassesにマッピングしようとしていますが、ObjectMapperにいくつかの機能私が望むもの最初のCustomClassには、[String:CustomClass2]というタイプのプロパティがあります。このDictionaryのインデックスは、2番目のCustomObjectのプロパティIDにする必要があります。使用さObjectMapper how map [String:CustomObject] DictionaryのインデックスをCustomObjectプロパティとして持つ

JSON:使用

{ 
    "types": [ 
    { 
    "id": "mk8QPMSo2xvtSoP0cBUD", 
    "name": "type 1", 
    "img": "type_1", 
    "showCategories": false, 
    "modalityHint": [ 
     "K7VqeFkRQNXoh2OBxgIf" 
    ], 
    "categories": [ 
     "mP3MqbJrO5Da1dVAPRvk", 
     "SlNezp2m3PECnTyqQMUV" 
    ] 
    } 
    ] 
} 

クラス:あなたのJSONで

class MyClass: Mappable { 
    var types:[String:MyClass2] = [String:MyClass2]() //Index should be ID property of MyClass2 Object 
    required init?(map:Map) { 
     guard map.JSON["types"] != nil else { 
      return nil 
     } 
    } 
    func mapping(map: Map) { 
     types <- map["types"] 
    } 
} 
class MyClass2: Mappable { 
    private var id: String! 
    private var name: String! 
    private var img: String! 
    private var showCategories: Bool! 
    private var modalityHint: [String]? 
    private var categories: [String]? 
    required init?(map: Map) { } 
    func mapping(map: Map) { 
     id <- map["id"] 
     name <- map["name"] 
     img <- map["img"] 
     showCategories <- map["showCategories"] 
     modalityHint <- map["modalityHint"] 
     categories <- map["categories"] 
} 
+0

私はタイプが '[クラス2文字列]すべきではないと思います] ' – Scriptable

答えて

1

typesキーがarrayないDictionaryです。

変更:

var types:[String:MyClass2] = [String:MyClass2]() 

へ:

このよう
var types:[Class2] = [] 

: `、ちょうど` [クラス2:

class MyClass: Mappable { 
    private var arrayTypes = [MyClass2] { 
     didSet{ 
      var mapTypes = [String:MyClass2]? 
      for obj in arrayTypes { 
       mapTypes[obj.id] = obj 
      } 

      types = mapTypes 
     } 
    } 

    var types:[String:MyClass2] = [String:MyClass2]() 
    required init?(map:Map) { 
     guard map.JSON["types"] != nil else { 
      return nil 
     } 
    } 
    func mapping(map: Map) { 
     arrayTypes <- map["types"] 
    } 
} 
+0

はい、私のJSON構造は私のクラス構造とは異なりますが、ObjectMapper関数を使ってこの変換を行う方法はありますか? – Bim

+0

それで、id値を辞書のキーとして辞書にマップしたいのですか? –

+0

はい、正確です。それが可能かどうか知っていますか? – Bim

関連する問題