スウィフト3(ObjectMapper)を使用して、指定されたJSON応答のplayers
配列を "Player"というカットダウンクラスオブジェクトにマップしようとしています。それをマップするのが難しいと思っています。スウィフトObjectMapperは、より多くのコンテキストなしで曖昧な返信を維持します
// Sample JSON
{
"_meta": {
...
},
"fixtures": [{
...
}],
"players": [{
"name": "Smith",
"id": "15475-9524",
}]
}
しかし、私はそれは難しい、それは常に、それはより多くのコンテキストを必要と文句を言いようが適切にマッピングさせる方法を理解してもらうために探しています。
私はJSONコンシューマに、プレイヤーのリストを取得して、Object Mapperを使用しているすべてのプレーヤーを配列にマッピングしたいと考えています。
は、私が使用している場合
var players : Array<Player> = Mapper<Player>().mapArray(JSONArray: res)
それは私がJSONを消費するAlamoFireを使用しています
class Player: NSObject, Mappable {
var name: String?
required init?(map: Map) {
super.init()
}
// Mappable
func mapping(map: Map) {
name <- map["name"]
}
}
を次のように
Type of expression is ambiguous without more context
私のクラスがある文句を言います。
Alamofire.request(url).responseJSON(completionHandler: {
response in
switch response.result {
case .success(let JSON):
guard let res = JSON as? [String:Any] else {
print ("Can't do this")
return
}
var players : Array<Player> = Mapper<Player>().mapArray(JSONArray: res)
print (players)
break
case .failure(let error):
print("** Request failed with error: \(error) **")
break
}
フェッチしたい配列でObjectMapperを使用する方法をよく理解できません。
これについての助けがあれば助かります。
を行います。私は以前ObjectMapperを使っていませんでした。私はいつも手作業で構文解析を行ってきたので、これをやりたいと思っていました。 – zardon
これはうまくいきました。アンラップされていないオプションの値について不平を言っていましたが、それで 'let players:Array = Mapper ().mapArray(JSONArray:json_players)!'に変更されました! –
zardon