나는 Alamofire
및 Alamofire Object Mapper
을 사용하고 있습니다.객체 매퍼를 사용하여 응답 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": ""
}
내가 Games
배열을 얻을합니다. 여기
내
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) 응답은 다음과 같습니다 실패 : 오류 도메인 = com.alamofireobjectmapper.error 코드 = 2"ObjectMapper 응답을 직렬화하는 데 실패했습니다 "사용자 정보가 = {NSLocalizedFailureReason = ObjectMapper에 실패했습니다. } "
다른 부분은 모두 responses
이 response
키가됩니다. 어떻게 필터링 할 수 있습니까?
당신의 도움을 바랍니다.