2016-08-24 8 views
0

Я не знаю, что не так. Моя консоль не дает мне никаких ошибок, мой код кажется прекрасным, но ничего не появляется. Может ли кто-нибудь проверить мой код, посмотреть, почему он не хочет работать? Мой tableView связан с его делегатами и источником. Не знаете, в чем проблема.Удаленные данные не отображаются на tableView

Вот мой код:

private let cellIdentifier = "cell" 
private let apiURL = "api link" 


class TableView: UITableViewController { 


//TableView Outlet 
@IBOutlet weak var LegTableView: UITableView! 


//API Array 
var legislatorArray = [congressClass]() 


func getLegislators (fromSession session: NSURLSession) { 

    //Calling url 
    if let jsonData = NSURL(string: apiURL) { 

     // Requesting url 
     let task = session.dataTaskWithURL(jsonData) {(data, response, error) -> Void in 
      //Check for errors 
      if let error = error {print(error) 
      } else { 
       if let http = response as? NSHTTPURLResponse { 
        if http.statusCode == 200 { 

         //Getting data 
         if let data = data { 

          do { 

           let legislatorData = try NSJSONSerialization.JSONObjectWithData(data, options: .MutableContainers) 

           //Get API data 
           if let getData = legislatorData as? [NSObject:AnyObject], 
            findObject = getData["results"] as? [AnyObject]{ 

            //Return data 
            for cellFound in findObject{ 

             if let nextCell = cellFound["results"] as? [NSObject:AnyObject], 

              name = nextCell["first_name"] as? String, 
              lastName = nextCell["last_name"] as? String, 
              title = nextCell["title"] as? String, 
              partyRep = nextCell["party"] as? String, 
              position = nextCell ["position"] as? String, 
              id = nextCell ["bioguide_id"] as? String 

             { 

              //Add data to array 
              let addData = congressClass(name: name, lastName: lastName, title: title, party: partyRep, position: position, bioID: id) 
              self.legislatorArray.append(addData) 
             } 
            }//end cellFound 

            //Adding data to table 
            dispatch_async(dispatch_get_main_queue()) {() -> Void in 
             self.tableView.reloadData() 
            } 
           } 
          } 

           //end do 
          catch {print(error)} 

         }//end data 

        }//end statusCode 

       }//end http 

      }//else 

     }//end task 

     //Run code 
     task.resume() 

    }//end jsonData 


} 



override func viewDidLoad() { 
    super.viewDidLoad() 

    let sessionConfig = NSURLSessionConfiguration.defaultSessionConfiguration() 
    let urlSession = NSURLSession(configuration: sessionConfig) 
    getLegislators(fromSession: urlSession) 

} 

override func didReceiveMemoryWarning() { 
    super.didReceiveMemoryWarning() 
    // Dispose of any resources that can be recreated. 
} 

// MARK: - Table view data source 

override func numberOfSectionsInTableView(tableView: UITableView) -> Int { 
    // #warning Incomplete implementation, return the number of sections 
    return 1 
} 

    //TableView Rows 
override func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int { 
    return legislatorArray.count 
    //return 5 
} 

//Cell Configuration 
override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell { 

    let cell = tableView.dequeueReusableCellWithIdentifier(cellIdentifier, forIndexPath: indexPath) as! CellTableView 

    cell.lesName?.text = legislatorArray[indexPath.row].name + " " + legislatorArray[indexPath.row].lastName 
    cell.lesTitle?.text = legislatorArray[indexPath.row].title 
    cell.lesParty?.text = legislatorArray[indexPath.row].party 

    //These tests worked fine.. the tableView is working. But the data doesn't seem to pass. 
    //cell.lesName.text = "Name" + " " + "lastName" 
    //cell.lesTitle.text = "Title goes here" 
    //cell.lesParty.text = "D" 

    return cell 
} 
} 
+0

'if let nextCell = cellFound ["results"] as? [NSObject: AnyObject] 'не будет отображаться, потому что для каждого законодателя нет «результатов», а nextCell [«position»] не существует –

ответ

2

Вы не перезаряжая Tableview

Проблема в этом фрагменте кода

       //----------------------------- 

           //New empty array for api data 
           var indexPath:[NSIndexPath] = [] 

           //Adding data to new array 
           for i in 0..<self.legislatorArray.count{ 
            let secondIndexPath = NSIndexPath(forRow: i, inSection: 0) 
            indexPath.append(secondIndexPath) 
           } 

           //Adding data to table 
           dispatch_async(dispatch_get_main_queue()) {() -> Void in 
            self.tableView.insertRowsAtIndexPaths(indexPath, withRowAnimation: .Left) 
           } 

Вам не нужно ничего из этого , Вы можете просто перезагрузить Tableview следующим образом:

      //Adding data to table 
          dispatch_async(dispatch_get_main_queue()) {() -> Void in 
           //You only need to reload it and that should do the trick 
           self.tableView.reloadData() 
          } 

Я знаю, что вы сказали, что ваша Tableview подключен к делегату и DataSource, но он не отображается в вашем коде.

Вы соответствовали ViewController правильным протоколам, но вам нужно что-то подобное в вашем viewDidLoad.

self.tableView.deletage = self 
self.tableView.dataSource = self 
//I don't know if this was a typo but in your cellForRowAtIndexPath you are using CellTableView 
let nibName = UINib(nibName: "CellTableView", bundle:nil) 
self.tableView.registerNib(nibName, forCellReuseIdentifier: cellIdentifier) 

Я создал пример лучшего дизайна для реализации Это для WebService и пользовательского класса https://github.com/phantomon/Stackoverflow/blob/master/SO1/MyTableView/MyTableView/Models/WebServiceManager.swift

Это для ViewController с Tableview https://github.com/phantomon/Stackoverflow/blob/master/SO1/MyTableView/MyTableView/ViewController.swift

Вы просто необходимо изменить UITableViewCell с вашим пользовательским. И, конечно, просмотрите данные пользовательского класса.

+0

CellTableView - это пользовательский вид моей ячейки ... и я пробовал все это здесь и все еще ничего:/ – art3mis

+0

Можете ли вы показать мне обновленную версию? возможно, с пастебином или обновлением вопроса? –

+0

да, конечно ... я многое изменил, но ничего не работает. – art3mis

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

  • Нет связанных вопросов^_^