好的,首先,我已经阅读了有关该主题的其他几篇文章,并且我知道我要描述的可能是同步调用,但我真正需要的是获取数据并使用它,所以如果我应该看在其他方向让我知道:
我必须调用 api 来检索 json 对象并使用它们来填充表视图。我的问题是我无法传递/返回数据以使用它:
在控制器中:
callProjectTypes()
var testjson = JSON(data:test)
println("should print some data")
println(testjson[0])
调用函数:
func callProjectTypes() -> (NSData) {
var data = NSData()
serverCall("http://url/to/project/types") {
responseData, error in
if responseString == nil {
println("Error during post: \(error)")
return
}
// use responseData here
data = responseData
}
return data
}
func serverCall(url: String, completionHandler: (responseData: NSData!, error: NSError!) -> ()) {
var URL: NSURL = NSURL(string: url)!
var request:NSMutableURLRequest = NSMutableURLRequest(URL:URL)
request.HTTPMethod = "GET";
var creds = encodeCredentials()
request.addValue("\(creds)", forHTTPHeaderField: "Authorization")
NSURLConnection.sendAsynchronousRequest(request, queue: NSOperationQueue.mainQueue()){
response, data, error in
var output: NSData!
if data != nil {
output = data
}
completionHandler(responseString: output, error: error)
}
}
println(testjson[0])
总是返回“ nill
”,所以我假设return data
我的callProjectTypes
函数中的“”在数据到达之前返回。
我应该怎么做才能完成这项工作?