swift - Swift 中的 JSON 解析

标签 swift swifty-json

我在做 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/

相关文章:

ios - pod 安装 Firebase Analytics pod Xcode 后无法生成进程(参数列表太长)

json - 轻松地将对象序列化为 JSON

swift - swift 3.0 编译的模块无法在 Swift 3.0.1 中导入

ios - 更新Xcode到7.0后出现错误

ios - CloudKit 在测试时存储和恢复数据,应用程序现已发布,用户正在丢失数据

ios - App Transport Security 阻止通过自定义 url 方案进行路由

swift - 如何以编程方式添加导航 Controller ,我正在快速使用 XIB 文件

ios - 启动后更改部署目标

swift - Swift 3.0 上没有这样的模块 'SwiftyJSON'

Swift TableView 不返回numbersOfRow