【发布时间】:2017-04-03 12:04:59
【问题描述】:
我的错误应该很明显,但我找不到;
我有一个全局变量初始化了我的类的开头:
class InscriptionStageViewController: UIViewController, UIPickerViewDelegate, UIPickerViewDataSource {
var lesSemaines = [String]()
我尝试使用该函数用一个遥远的 json 文件填充这个数组
func getSemainesStages(){
let url = URL(string: "http://www.boisdelacambre.be/ios/json/semaines.json")
let task = URLSession.shared.dataTask(with: url!){ (data, response, error) in
if let content = data {
do {
let myJson = try JSONSerialization.jsonObject(with: content, options: JSONSerialization.ReadingOptions.mutableContainers) as AnyObject
let listeSemaines = myJson["semaine"] as! [[String:AnyObject]]
//print(listeSemaines)
for i in 0...listeSemaines.count-1 {
var tabSem = listeSemaines[i]
let intituleSemaine:String = tabSem["intitule"] as! String
//let dateSemaine:String = tabSem["date"] as! String
DispatchQueue.main.sync
{
self.lesSemaines.append(intituleSemaine)
}
}
} catch
{
print("erreur Json")
}
}
}
task.resume()
}
当我在 viewDidLoad 中调用我的函数然后打印我的全局数组时,它是空的(URL 正确,json 数据被正确读取,当我读取循环中数组中附加的数据时,它打印(所以)需要的价值...)
提前致谢
【问题讨论】:
-
你什么时候阅读
lesSemaines?因为我猜你的问题是由于代码的异步部分造成的。 -
有什么问题?数组为空?
-
在我的viewDidLoad中,我调用了函数,然后尝试打印数组,结果是空的(当我直接在函数中打印就可以了)