我在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"
}
}
答案 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(:_)
。这将为您转换对象。