在Swift中使用alamofire的ObjectMapper JSON

时间:2016-07-02 04:25:35

标签: ios swift alamofire

我想在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而不是男性或女性时!

我的代码出了什么问题?

1 个答案:

答案 0 :(得分:2)

这可能是延迟回复,但请尝试检查“钥匙”是否有错误。 缩小问题的根源。所以首先检查response.result.value是否给你一个回复。

如果我是对的,无论是response.result.value == nil还是你的“性别”键映射都是错误的。

我建议您使用if语句而不是let。

所以例如

flatMap