使用 Alamofire 和 Argo:找不到成员 'None'
Using Alamofire & Argo: Could not find member 'None'
Argo 在 Swift 上解析 Alamofire 响应时遇到问题。它说:
找不到成员'None'
我真的是 Swift 的菜鸟,我不知道会发生什么。我尝试使用 nil 和 &error 而不是 .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"
}
}
您可以将 nil
传递给 options 和 error 参数:
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(:_)
。这将为您转换对象。
Argo 在 Swift 上解析 Alamofire 响应时遇到问题。它说:
找不到成员'None'
我真的是 Swift 的菜鸟,我不知道会发生什么。我尝试使用 nil 和 &error 而不是 .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"
}
}
您可以将 nil
传递给 options 和 error 参数:
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(:_)
。这将为您转换对象。