如何让关闭顺利执行

时间:2017-01-05 02:03:21

标签: ios swift3 closures

所以我在调用闭包函数时遇到了问题。

private var formatedArticles = [article]()

override func viewDidLoad() {
    super.viewDidLoad()

    let unformatedData = JsonDataFetcher()

    unformatedData.getFromJSON() { articles in
        self.formatedArticles = unformatedData.addArticles(array: articles)
        print(self.formatedArticles[0])
    }
    print(self.formatedArticles[0])
}

所以基本上当这个运行时,应用程序崩溃了最后一个print语句,因为我的闭包中的代码还没有被执行。当删除该打印时,闭包内的打印执行...如何在需要时运行闭包?因为现在的问题是我想将我的格式化文章数组用于其他事情,但我一直让索引超出界限

1 个答案:

答案 0 :(得分:0)

这不是异步代码的工作方式。下一步必须在内部闭包。所以,像这样:

unformatedData.getFromJSON() { articles in
    self.formatedArticles = unformatedData.addArticles(array: articles)
    print(self.formatedArticles[0])
    // use self.formatedArticles _here_
}
// do _nothing_ here