This question already has answers here:
Returning data from async call in Swift function
(12个答案)
2年前关闭。
嗨,我目前在Swift中从事Api Manager的工作,到目前为止,我得到了:
JSON Api是正确的,但是我的快速代码出了点问题,但是我不确定它是什么,
当我致电这位经理时:
我只是得到空括号:
有人可以帮助我吗?
因此,如果要打印响应,则可以执行以下操作:
(12个答案)
2年前关闭。
嗨,我目前在Swift中从事Api Manager的工作,到目前为止,我得到了:
import Foundation
import CoreData
import Alamofire
import SwiftyJSON
class ApiManager {
var data: NSArray = []
func getApi() -> NSArray {
let user:String = "user"
let password:String = "password"
Alamofire.request(.GET, "http://localhost/api/")
.authenticate(user: user, password: password)
.responseJSON{ (request, response, jsonData, error) in
if let jsonData1 = jsonData {
if let jsonData2 = JSON(jsonData1).dictionaryObject {
self.data = jsonData2["data"] as! NSArray
}
}
}
return data
}
}
JSON Api是正确的,但是我的快速代码出了点问题,但是我不确定它是什么,
当我致电这位经理时:
let response = ApiManager().getApi()
println(response)
我只是得到空括号:
(
)
有人可以帮助我吗?
最佳答案
这是一个错误的设计。你不应该这样。您的getApi()
方法应具有成功块,如果响应成功,则将执行该块。这是一种可能的解决方案:
static func getApi(success:( (data:NSArray) -> () )) {
let user:String = "user"
let password:String = "password"
Alamofire.request(.GET, "http://localhost/api/")
.authenticate(user: user, password: password)
.responseJSON{ (request, response, jsonData, error) in
if let jsonData1 = jsonData {
if let jsonData2 = JSON(jsonData1).dictionaryObject {
success(jsonData2 as! NSArray)
}
}
}
return data
}
因此,如果要打印响应,则可以执行以下操作:
APIManager.getApi {
println($0)
}
09-19 03:33