2016-12-25 64 views
0

我試圖用Swift 3和(ObjectMapper)將一個給定的JSON響應中的players數組映射到名爲「Player」的剪切類對象上;但我發現很難映射它。Swift ObjectMapper在沒有更多上下文的情況下不斷返回模糊

// Sample JSON 
{ 
    "_meta": { 
     ... 
    }, 
    "fixtures": [{ 
     ... 
    }], 
    "players": [{ 
     "name": "Smith", 
     "id": "15475-9524", 
    }] 
} 

不過,我發現它很難得到它,瞭解如何使它正確映射,因爲它總是抱怨說,它需要更多的上下文。

我想讓我的JSON消費者獲得我的球員名單,然後將所有使用Object Mapper的球員映射到數組中。

當我使用

var players : Array<Player> = Mapper<Player>().mapArray(JSONArray: res)

它抱怨

Type of expression is ambiguous without more context

我的班級如下

class Player: NSObject, Mappable { 
    var name: String? 

    required init?(map: Map) { 
     super.init() 
    } 

    // Mappable 
    func mapping(map: Map) { 
     name <- map["name"] 
    } 
} 

我使用AlamoFire消耗JSON。我不太明白如何在我想要獲取的數組上使用ObjectMapper。

對此的任何幫助將是很好的。

回答

1

我認爲你是JSON字典與玩家陣列混淆。

試試這個:

guard let res = JSON as? [String:Any] else { 
     print ("res:Can't do this") 
     return 
    } 

    guard let json_players = res["players"] as? [[String:Any]] else { 
     print ("json_players:Can't do this") 
     return 
    } 

    var players : Array<Player> = Mapper<Player>().mapArray(JSONArray: json_players) 
+0

好了,就行了。我之前沒有使用過ObjectMapper,並希望能夠繼續使用它,因爲我一直在手動完成解析 – zardon

+1

它的工作非常感謝;雖然它抱怨可選的價值不被解開;所以將其改爲'讓玩家:Array = Mapper ().mapArray(JSONArray:json_players)!' – zardon

相關問題