使用 ObjectMapper 和 Alamofire 时对象始终为零

Posted

技术标签:

【中文标题】使用 ObjectMapper 和 Alamofire 时对象始终为零【英文标题】:Object always nil while using ObjectMapper and Alamofire 【发布时间】:2015-07-20 20:36:12 【问题描述】:

似乎无论我做什么,我在 Swift 中转换的 JSON 变量总是为零。我正在关注AlamofireObjectMapper 的文档,但似乎没有任何效果。

func loginAF(username: String, password: String, url: String) 

        Alamofire.request(.GET, url, parameters: ["username": username, "passoword": password]).responseObject  (response: Resultset?, error: NSError?) in
            println(response!)
            println(response?.account?.mongoId)
        
    

最后的打印语句是nil

这是Resultset 结构,它应该从中提取:

struct Resultset: Mappable 
    var account: Account?

    init()
    init?(_ map: Map) 
        mapping(map)
    

    mutating func mapping(map: Map) 
        account <- map["account"]
    


struct Account: Mappable 
    var mongoId: Int?

    init() 
    init?(_ map: Map) 
        mapping(map)
    

    mutating func mapping(map: Map) 
        mongoId <- map["mongoId"]
    

我确定我得到了有效数据,以下是它的样子:

"errors":[],"resultset":"account":"mongoId":"55a7961fdf5d3ca421ff4cb9","locations":["......

如果有人知道任何其他轻松将 JSON 转换为对象的方法,请告诉我。谢谢!

【问题讨论】:

您是否尝试过 resultset.account 而不是 account 中的 account account 【参考方案1】:

您在请求中的一个参数称为密码,其次我认为解决方案是您不能使用结构。

这是因为 Serializer 期望返回 AnyObject 作为其结果,而结构不是 AnyObject,这是一种耻辱,因为结构是完美的值类型。

我从这里得到这个http://kaandedeoglu.com/2015/02/20/From%20JSON%20to%20Type-safe%20objects%20in%20Swift/

另外在文档中我刚刚看到了类。 希望对你有帮助

【讨论】:

将我的结构更改为一个类对我有用。嵌套对象时似乎只是一个问题。

以上是关于使用 ObjectMapper 和 Alamofire 时对象始终为零的主要内容,如果未能解决你的问题,请参考以下文章

ObjectMapper - 线程安全和性能的最佳实践

ObjectMapper的使用

ObjectMapper 和具有唯一键的数组

ObjectMapper - 嵌套动态键

jackson中objectMapper的使用

Jackson ObjectMapper类使用解析