2016-12-26 13 views
1

私はAlamofireAlamofire Object Mapperを使用しています。私はGames配列を取得したい、この応答からオブジェクトマッパーを使用してレスポンスJSONから子配列をマップする方法は?

{ 
    "status": 200, 
    "error": false, 
    "response": { 
    "id": 9, 
    "parent_id": 0, 
    "company_id": 1, 
    "image": "", 
    "name": "Games", 
    "description": "Games", 
    "created_at": "2016-12-16 12:11:51", 
    "updated_at": "2016-12-16 12:11:51", 
    "deleted_at": null, 
    "Games": [ 
     { 
     "id": 36, 
     "company_id": 1, 
     "application_id": 7, 
     "category_id": 9, 
     "start_date": "2016-12-16 00:00:00", 
     "end_date": "2016-12-27 00:00:00", 
     "status": "PUBLISH", 
     "created_at": "2016-12-16 13:29:16", 
     "updated_at": "2016-12-16 13:29:48", 
     "deleted_at": null 
     } 
    ] 
    }, 
    "error_messages": [], 
    "error_message": "" 
} 

が、これは、Webサービスからの応答であると考えてください。

は、ここに私のGamesモデル

var gameId : String! 
    var companyID : String! 
    var categoryID : String! 
    var startDate : String! 
    var endDate : String! 
    var status : String! 
    var buildertitle : String! 
    var builderdescription : String! 



    override init() { 
     super.init() 
    } 

    required convenience init?(map : Map) { 
     self.init() 
    } 

    func mapping(map: Map) { 

     gameId <- map["id"] 
     companyID <- map["company_id"] 
     categoryID <- map["category_id"] 
     startDate <- map["start_date"] 
     endDate <- map["end_date"] 
     status <- map["status"] 
     buildertitle <- map["title"] 
     builderdescription <- map["description"] 

    } 

    init(dic : NSDictionary) { 
     super.init() 

     gameId = Utils.nulltoEmpty(dic["id"] as AnyObject) as! String 
     companyID = Utils.nulltoEmpty(dic["company_id"] as AnyObject) as! String 
     categoryID = Utils.nulltoEmpty(dic["category_id"] as AnyObject) as! String 
     startDate = Utils.nulltoEmpty(dic["start_date"] as AnyObject) as! String 
     endDate = Utils.nulltoEmpty(dic["end_date"] as AnyObject) as! String 
     status = Utils.nulltoEmpty(dic["status"] as AnyObject) as! String 
     buildertitle = Utils.nulltoEmpty(dic["title"] as AnyObject) as! String 
     builderdescription = Utils.nulltoEmpty(dic["description"] as AnyObject) as! String 

    } 

、ここでは私のresponseモデル

var status : Int! 
    var user : User? 
    var errorMessage : String? 
    var device : Device? 
    var games : Games? 

    required convenience init?(map : Map) { 
     self.init() 
    } 


    func mapping(map: Map) { 
     status <- map["status"] 
     user <- map["response"] 
     errorMessage <- map["error_message"] 
     device <- map["response"] 
     games <- map["Games"] 
    } 

でされ、最終的にこれはalamofire

func getGamesList() { 
    let UrlReqeust = Router.getUserNews().urlRequest 

    Alamofire.request(UrlReqeust!).responseArray{ (response : DataResponse<[Games]>) in 

     print("The status code is : \(response.response?.statusCode)") 
     print("the response is : \(response)") 

     switch response.result { 
     case .success(let gamesbuilder): 

      print("the result is : \(gamesbuilder)") 

      break 
     case .failure(let Error): 
      break 
     } 



    } 

} 
と私のrequstです
  • responseArrayの代わりにresponseStringの場合はStringとなります。それ以外の場合は、以下のような成功ステータスコードでエラーが返されます。

「がステータスコードがある:オプション(200) 応答は:FAILURE:エラードメイン= com.alamofireobjectmapper.errorコード= 2 "ObjectMapper応答をシリアル化に失敗しました" のUserInfo = {NSLocalizedFailureReason = ObjectMapper失敗}

他の部分は、すべてresponsesresponseのキーになります。どのようにそれらをフィルタリングできますか?

これであなたの助けを願っています。

答えて

0

responseArray(keyPath: "Games")またはresponseArray(keyPath: "response.Games")を試しましたか?マッピングすると、すべてのフィールドを解析する方法がわからないからです。

関連する問題