2017-02-16 27 views
0

我有一张表,并从GET方法获取了我的数据。获得数据后,我想使用reloadData函数,但它不起作用,我的表格不显示任何内容。从get方法获取数据后reloadData不起作用

import SwiftyJSON 

class NewsTableViewController: UITableViewController { 
    var ids    = [String]() 
    var titles   = [String]() 
    var descriptions = [String]() 
    var images   = [String]() 
    var links   = [String]() 
    var dates   = [String]() 

    @IBOutlet var table_news: UITableView! 

    override func viewDidLoad() { 
     super.viewDidLoad() 
     table_news.delegate = self 
     getNews() 
     // Uncomment the following line to preserve selection between presentations 
     // self.clearsSelectionOnViewWillAppear = false 
     // Uncomment the following line to display an Edit button in the navigation bar for this view controller. 
     // self.navigationItem.rightBarButtonItem = self.editButtonItem() 
    } 

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

    // MARK: - Table view data source 
    override func numberOfSections(in tableView: UITableView) -> Int { 
     // #warning Incomplete implementation, return the number of sections 
     return self.ids.count 
    } 

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

    override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { 
     let cell:NewsTableViewCell = self.tableView.dequeueReusableCell(withIdentifier: "news_cell") as! NewsTableViewCell 
     cell.lbl_date.text = self.dates[indexPath.row] 
     return cell 
    } 

    /* 
    // Override to support conditional editing of the table view. 
    override func tableView(_ tableView: UITableView, canEditRowAt indexPath: IndexPath) -> Bool { 
     // Return false if you do not want the specified item to be editable. 
     return true 
    } 
    */ 

    /* 
    // Override to support editing the table view. 
    override func tableView(_ tableView: UITableView, commit editingStyle: UITableViewCellEditingStyle, forRowAt indexPath: IndexPath) { 
     if editingStyle == .delete { 
      // Delete the row from the data source 
      tableView.deleteRows(at: [indexPath], with: .fade) 
     } else if editingStyle == .insert { 
      // Create a new instance of the appropriate class, insert it into the array, and add a new row to the table view 
     }  
    } 
    */ 

    /* 
    // Override to support rearranging the table view. 
    override func tableView(_ tableView: UITableView, moveRowAt fromIndexPath: IndexPath, to: IndexPath) { 
    } 
    */ 

    /* 
    // Override to support conditional rearranging of the table view. 
    override func tableView(_ tableView: UITableView, canMoveRowAt indexPath: IndexPath) -> Bool { 
     // Return false if you do not want the item to be re-orderable. 
     return true 
    } 
    */ 

    /* 
    // MARK: - Navigation 

    // In a storyboard-based application, you will often want to do a little preparation before navigation 
    override func prepare(for segue: UIStoryboardSegue, sender: Any?) { 
     // Get the new view controller using segue.destinationViewController. 
     // Pass the selected object to the new view controller. 
    } 
    */ 

    func getNews() { 
     RestApiManager.sharedInstance.getNews { (json: JSON) in 
      if let results = json.array { 
       for entry in results { 
        self.ids.append(entry["id"].string!) 
        self.titles.append(entry["title"].string!)      self.descriptions.append(entry["description"].string!) 
        self.links.append(entry["link"].string!) 
        self.dates.append(entry["date"].string!) 
       } 

       DispatchQueue.main.async{ 
        //print(self.ids.count) it shows 16 
        self.table_news.reloadData() 
       } 
      } 
     } 
    } 
} 

回答

1

你不是从numberOfRowsInSection:返回0吗?那么,桌子如何显示任何东西? :)

+0

当然,但如果我想从服务器获取值,如何解决这个问题? –

+0

当您从服务器获取一些数据时,更新numberOfRowsInSection:以返回您要在表上显示的行数。目前,你已经硬编码返回0,所以表不妨碍创建任何单元格。 :) – ystack