我想在Swift语言中处理JSON响应,我在项目中使用3个pod:Alamofire
- ObjectMapper
- AlamofireObjectMapper
当http请求发送时,我想在我的Object类中使用JSON。没有麻烦。 这是我的代码。
Contact.swift类:
import Foundation
import ObjectMapper
class Name: Mappable {
var title: String!
var first: String!
var last: String!
required init?(_ map: Map) {
}
func mapping(map: Map) {
title <- map["title"]
first <- map["first"]
last <- map["last"]
}
}
class ContactsResponse: Mappable {
var gender: String!
var nameFull: [Name]?
required init?(_ map: Map) {
}
func mapping(map: Map) {
gender <- map["gender"]
nameFull <- map["name"]
}
}
ViewController.swift:
let baseURL = "http://api.randomuser.me/"
override func viewDidLoad() {
super.viewDidLoad()
makeHTTPRequest()
}
func makeHTTPRequest() {
Alamofire.request(.GET, baseURL).responseObject { (response: Response<ContactsResponse, NSError>) in
let contactResponse = response.result.value
print(contactResponse?.gender) // print Nil :(
}
}
但是当我为性别建立项目打印nil
而不是男性或女性时!
我的代码出了什么问题?
答案 0 :(得分:2)
这可能是延迟回复,但请尝试检查“钥匙”是否有错误。 缩小问题的根源。所以首先检查response.result.value是否给你一个回复。
如果我是对的,无论是response.result.value == nil还是你的“性别”键映射都是错误的。
我建议您使用if语句而不是let。
所以例如
flatMap