2016-03-18 1 views
0

Я пытаюсь получить некоторые данные из обмена стек api с помощью alamofire и swifty json. Я могу распечатать необходимые данные в журнале, но когда я запускаю приложение, симулятор показывает только пустые ячейки. Я проверил идентификатор и я поставил значение прототипа ячейки для 1.`вид таблицы, не отображающий содержимое в ячейках

class MainTableViewController: UITableViewController,UISearchResultsUpdating { 


    var searchKeyword: String = "questions" 

    // empty array to store the search results 
    var searchResults: [SearchResult] = [] 

func alamofireFunction() { 
    Alamofire.request(.GET, "https://api.stackexchange.com/2.2/questions?=%20\(searchKeyword)%20viewpage=1&fromdate=1183075200&todate=2554416000&order=asc&sort=activity&tagged=ios&site=stackoverflow").responseJSON { (response) -> Void in 

      switch response.result { 

      case .Success: 
       if let value = response.result.value { 
        let json = JSON(value) 
        for (var idx=0; idx<=json["items"].count; idx++) { 
         let result = SearchResult() 
         //print(json["items"][idx]["title"].stringValue) 
         result.name = json["items"][idx]["owner"]["display_name"].stringValue 
         result.question = json["items"][idx]["title"].stringValue 
         result.image = json["items"][idx]["owner"]["profile_image"].stringValue 
         self.searchResults.append(result)  
        }     
       } 

      case .Failure: 
       print("error") 



      } 
     } 


    } 


    override func viewDidLoad() { 
     super.viewDidLoad() 


     alamofireFunction() 

} 
     override func didReceiveMemoryWarning() { 
     super.didReceiveMemoryWarning() 
     // Dispose of any resources that can be recreated. 
    } 
    // MARK: - Table view data source 
    override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell { 
     let cell = tableView.dequeueReusableCellWithIdentifier("Cell", forIndexPath: indexPath) as! MainTableViewCell 


     cell.questionLabel.text = searchResults[indexPath.row].question 
     cell.nameLabel.text = searchResults[indexPath.row].name 


     return cell 
    } 



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

     override func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int { 
      // #warning Incomplete implementation, return the number of rows 
      return searchResults.count 

    }` 
+0

Вы установили делегат и datasource в tableview? если да, то после получения данных reload tableview –

+1

большое вам спасибо, перезагрузка табличного представления сделала работу –

ответ

2

Вы должны вызывать self.reloadData(), когда изменения исходных данных. Это заставит tableView вызывать методы dataSource.

0

Это потому, что вы используете запрос от URL, а этот процесс выполняется в потоке, поэтому, когда вы запрашиваете данные таким образом, вы должны вызвать tableView.reloadData(), чтобы знать, к источнику данных, что процесс закончил