2

我正在做Ray Wenderlich 的 JSON Parsing in Swift 教程

使用DataManager.getTopAppsDataFromAppsWithSuccessin时,在块viewDidLoad()外无法打印出数组。DataManager

有人知道如何在该块之外获取数组值吗?

代码 :

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";
   }
]

输出 :

[]
4

1 回答 1

1

这个函数getTopAppsDataFromAppsWithSuccess似乎是一个异步函数,不会阻塞执行。因此,println(self.apps)在实际检索数据之前立即执行。

JSON 数据应该没问题。只是不要尝试像那样打印它。您可以在 JSON 数据准备好后使用它。

于 2015-03-26T07:23:57.887 回答