2016-12-25 1 views
0

J'essaie d'utiliser Swift 3 avec (ObjectMapper) pour mapper un tableau players d'une réponse JSON donnée sur un objet de classe de réduction appelé "Player"; mais je trouve difficile de le cartographier.Swift ObjectMapper ne cesse de rendre ambigües sans plus de contexte

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

Cependant, je trouve qu'il est difficile de l'obtenir pour comprendre comment rendre la carte correctement car il se plaint toujours qu'il a besoin de plus de contexte. Je veux que mon client JSON m'obtienne la liste des joueurs puis mappe tous les joueurs en utilisant un Object Mapper dans un tableau.

Lorsque j'utilise

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

Il se plaint

Type of expression is ambiguous without more context

Ma classe est la suivante

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

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

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

J'utilise AlamoFire pour consommer le JSON. Je ne comprends pas très bien comment utiliser l'ObjectMapper sur le tableau que je veux récupérer.

Toute aide sur ce serait bien.

Répondre

1

Je pense que vous confondez le dictionnaire JSON avec le tableau du joueur.

Essayez ceci:

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

D'accord, fera. Je n'ai jamais utilisé ObjectMapper auparavant et je voulais l'essayer car j'ai toujours fait manuellement l'analyse – zardon

+1

Cela a fonctionné, merci beaucoup; bien qu'il se plaignait d'une valeur facultative n'étant pas déballée; donc changé à 'laisser joueurs: Array = Mapper (). mapArray (JSONArray: json_players)!' – zardon