我正在尝试学习如何将我的应用程序连接到REST数据库。我正在连接到一个名为JSONPlaceholder.com的虚拟数据库,并已成功检索数据。我现在想将NSDictionary转换为自定义对象。这是GET方法。
func apiGet () -> NSDictionary? {
var returnedNSDict: NSDictionary?
let postEndpoint = "http://jsonplaceholder.typicode.com/posts/1"
guard let url = NSURL(string: postEndpoint) else {
print("Error: cannot create URL")
return returnedNSDict
}
let urlRequest = NSMutableURLRequest(URL: url)
urlRequest.HTTPMethod = "GET"
let config = NSURLSessionConfiguration.defaultSessionConfiguration()
let session = NSURLSession(configuration: config)
let task = session.dataTaskWithRequest(urlRequest, completionHandler:
{ (data: NSData?, response: NSURLResponse?, error: NSError?) in
guard let returnedData = data else {
print("Error: did not receive data")
return
}
guard error == nil else {
print ("Error calling get is: \(error)")
return
}
let post: NSDictionary
do {
post = try NSJSONSerialization.JSONObjectWithData(returnedData,
options: []) as! NSDictionary
} catch {
print("error calling GET")
return
}
returnedNSDict = post
})
task.resume()
return returnedNSDict
}
您会注意到该方法应该返回NSDictionary。我的想法是,如果我可以使用此方法返回NSDictionary,那么我可以从其他地方调用它并将该字典转换为自定义对象。
我的问题是完成后似乎在方法的返回调用之后运行,因此保持返回NIL。如何在完成处理程序中将我正在访问的NSDictionary分配给我可以在调用此方法时返回的值?
提前致谢。