【发布时间】:2016-03-31 02:16:22
【问题描述】:
尝试从 API 中提取一些 JSON 数据,然后将其保存到核心数据中。
我目前这样做的方法是拉入 JSON 数据并返回该数组,然后迭代并保存到核心数据。
提取数据:(工作正常)
func getPlayerDataFromAPI() -> [Dictionary<String,AnyObject>]{
let url: String = "http://api.fantasy.nfl.com/v1/players/stats?"
let request : NSMutableURLRequest = NSMutableURLRequest()
var jsonData = [Dictionary<String,AnyObject>]()
request.HTTPMethod = "GET"
request.URL = NSURL(string: url)
session.dataTaskWithRequest(request) { (data, response, error) -> Void in
do {
let jsonResult = try NSJSONSerialization.JSONObjectWithData(data!, options:NSJSONReadingOptions.MutableContainers) as? NSDictionary
if (jsonResult != nil) {
if let playerData = jsonResult?["players"] as? [Dictionary<String, AnyObject>]{
jsonData = playerData
print(jsonData.count)
}
} else {
print("No Data")
}
}
catch {
print("Error Occured")
}
}.resume()
return jsonData;
}
然后我想测试返回的字典以确保它被填充:
func saveData(){
let players = getPlayerDataFromAPI()
print(players.count)
}
我在 viewController viewDidLoad 方法中调用 saveData() 并得到一个空字典...稍后,JSON 函数中的打印语句打印出来。
0
1427
在调用 print(count) 之前 getPlayerDataFromAPI() 函数没有完成是否有原因?我有这个逻辑错误吗?在这种情况下,我总是得到一个空字典,这不好。
【问题讨论】:
-
你明白“异步”是什么意思吗?在 SO 上进行搜索。这已经在这里处理了很多很多次了。
标签: ios json swift dictionary methods