私のエラーははっきりしているはずですが、私はそれを見つけることができません。Jsonと可変スコープ
私はグローバル変数は、私のクラスの始まりを初期化してきました:
class InscriptionStageViewController: UIViewController, UIPickerViewDelegate, UIPickerViewDataSource {
var lesSemaines = [String]()
私は私を呼び出すと、その関数に
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()
}
を使って遠くのJSONファイルで、この配列を移入してみてください関数は、viewDidLoadで、次に私はグローバル配列を印刷する、それは空です(URLは正しい、jsonデータが正しく読み取られ、ループ内の配列に追加されたデータを読み取るときに、(必要)値を印刷.. )
ありがとうございます。
あなたは 'lesSemaines'を読まないとき?あなたの問題は、コードの非同期部分に起因すると思います。 – Larme
問題点は何ですか?アレイは空ですか? –
私のviewDidLoadでは、関数を呼び出して配列を印刷しようとしましたが、空です(関数で直接印刷すると問題ありません) –