使用Alamofire& Argo:找不到会员'无'

时间:2015-04-19 22:26:22

标签: ios swift alamofire

我在Argo上解析Swift上的Alamofire响应时遇到了麻烦。它说:

找不到会员'无'

我是Swift的老师,我不知道会发生什么。我尝试使用nil和&错误而不是.None但仍然无法正常工作

import Foundation
import Alamofire
import Argo
import Runes

public class ApiConnector{

    private final var serverHost = "http://192.168.1.2/gpio-web/api/v1/api.php";

    func readPin(pin: Int) -> String{
        var result = "empty"
        Alamofire.request(.GET, serverHost, parameters: ["action": "input", "pins": pin])
            .response { (request, response, data, error) in
                let json: AnyObject? = NSJSONSerialization.JSONObjectWithData(data, options: NSJSONReadingOptions(0), error: .None)
                if let j: AnyObject = json {
                    let value = JSONValue.parse(j)
                    let response = Response.decode(value)
                }

        }

        return result;

    }


}

struct Response {
    let status: String;
}

 extension Response: JSONDecodable {
    static func create(status: String) -> Response {
        return Response(status: status)
    }

    static func decode(j: JSONValue) -> Response? {
        return Response.create
            <*> j <| "status"
    }
}

1 个答案:

答案 0 :(得分:0)

您可以将nil传递给选项错误参数:

let json: AnyObject? = NSJSONSerialization.JSONObjectWithData(data, options: nil, error: nil)

但您可能应该使用错误字段,并在出现错误时响应错误:

var error: NSError?
let json: AnyObject? = NSJSONSerialization.JSONObjectWithData(data, options: nil, error: &error)

if (json == nil && error != nil) {
    let error = error!
    // do something with error
}

那就是说,你在这里尝试 Alamofire已经为你做了什么:解析JSON。

不使用.response(),而是使用.responseJSON(:_)。这将为您转换对象。