2017-02-10 3 views
0

I follow this TutorialTableView With Sections Шаблон

И он отлично работает. Теперь, если я попытаюсь взять данные секций из 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

Смежные вопросы