2017-02-10 7 views
0

私は、次の通りです。this Tutorialセクション付きテーブルビュー

これは問題なく動作します。 JSONからセクションデータを取得しようとすると、これもうまくいきますが、すべてを表示する際に問題があります。

これは私がやったことです:

// TestVC.swift 
// WinterdienstTest 
// 
// Created by zwipf on 09.02.17. 
// Copyright © 2017 Squirrel. All rights reserved. 
// 

import UIKit 

class TestVC: UIViewController, UITableViewDataSource, UITableViewDelegate { 

@IBOutlet weak var tableView: UITableView! 

let sections: [String] = ["Tour 1", "Tour 2", "Tour 3"] 
var adressTour1: [String] = [] 
var adressTour2: [String] = [] 
var adressTour3: [String] = [] 

var adressTourALL: [Int: [String]] = [:] 


override func viewDidLoad() { 
    super.viewDidLoad() 

    tableView.delegate = self 
    tableView.dataSource = self 

    // URL abrufen 
    let url = NSURL(string: "https://api.myjson.com/bins/mml65") 
    let request = NSMutableURLRequest(url: url! as URL) 
    let task = URLSession.shared.dataTask(with: request as URLRequest) { data,response,error in 

    // JSON parsen und Ergebins in eine Liste von assoziativen Arrays wandeln 
    let responseString = try! JSONSerialization.jsonObject(with: data!, options: .allowFragments) as! [String:Any] 


    // Daten auslesen 
    if let Liegenschaften = responseString["Liegenschaften"] as? [AnyObject] { 

     for liegenschaft in Liegenschaften { 

      if let Winterdienst = liegenschaft["Winterdienst"] as? [AnyObject] { 

       for winterdienst in Winterdienst { 

        let tour = winterdienst["Tour"] as! String 

        if tour == "1" { 

         let adresse = liegenschaft["Adresse"] as! String 
         self.adressTour1.append(adresse) 
        } 
        if tour == "2" { 

         let adresse = liegenschaft["Adresse"] as! String 
         self.adressTour2.append(adresse) 
        } 
        if tour == "3" { 

         let adresse = liegenschaft["Adresse"] as! String 
         self.adressTour3.append(adresse) 
        } 
       } 
      } 
     } 
    } 

    self.adressTourALL = [0:self.adressTour1, 1:self.adressTour2, 2:self.adressTour3] 


    } 

    // UI-Darstellung aktualisieren 
    //OperationQueue.main.addOperation { 
     // self.tableView.reloadData() 
    //} 

    // task.resume() 

    print(self.adressTourALL) 


} 



func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int { 

    return adressTourALL.count 
} 

func numberOfSections(in tableView: UITableView) -> Int { 
    return sections.count 
} 

func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { 

    var cell = tableView.dequeueReusableCell(withIdentifier: "cell") 

    if cell == nil { 
     cell = UITableViewCell(style: .default, reuseIdentifier: "cell"); 
    } 

    print(adressTourALL[indexPath.section]![indexPath.row]) 
    cell!.textLabel!.text = adressTourALL[indexPath.section]![indexPath.row] 

    return cell! 
} 

} 

ホープ誰かが私を助けることができます!中でも

答えて

0

、あなたのコード内でこれを配置する必要があります。

func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int { 
    switch section{ 
    case 0: 
     return self.adressTour1.count 
    case 1: 
     return self.adressTour2.count 
    case 2: 
     return self.adressTour2.count 
    default: 
     return 1 
} 
+0

これは私が手動でadressTour1にいくつかの文字列を入れて正しい答え...ではありません - adressTour3配列は、それが動作します..しかし、それ配列に新しい値を追加しません。 – Squirrel

関連する問題