我在做 JSON Parsing in Swift tutorial by Ray Wenderlich .
在使用 DataManager.getTopAppsDataFromAppsWithSuccess
时在 viewDidLoad()
,当它在DataManager
之外时无法打印出数组 block 。
有人知道如何获取该 block 外的数组值吗?
代码:
var apps = [String]()
override func viewDidLoad() {
DataManager.getTopAppsDataFromAppsWithSuccess { (ByodData) -> Void in
let json = JSON(data: ByodData)
if let appArray = json.array{
for appDict in appArray {
var appName: String = appDict["name"].stringValue
self.apps.append(appName)
}
}
println(self.apps)
}
输入JSON:
[
{
"id":1,
"name":"AdobeReader",
"url":"comp2014group1.herokuapp.com/apps/1.json";
},
{
"id":2,
"name":"BBCiPlayer",
"url":"comp2014group1.herokuapp.com/apps/2.json";
},
{
"id":3,
"name":"BBCNews",
"url":"comp2014group1.herokuapp.com/apps/3.json";
},
{
"id":4,
"name":"BBCWeather",
"url":"comp2014group1.herokuapp.com/apps/4.json";
}
]
输出:
[]
最佳答案
此函数 getTopAppsDataFromAppsWithSuccess
似乎是一个异步函数,不会阻止执行。因此 println(self.apps)
在实际检索数据之前立即执行。
JSON数据应该没问题。只是不要尝试那样打印它。准备就绪后,您可以使用 JSON 数据。
关于swift - Swift 中的 JSON 解析,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29270286/