TableView不显示数据

我想填充我的UITableView与从GET请求收到的一些数据。 我不知道为什么,但如果在我的numberOfRowsInSection ,我返回一个具体的值(例如,8)它代表的信息。 如果y返回由请求填充的数组值,则UITableView不会添加任何行:

 class DashboardTableViewController: UITableViewController { var userData = [String]() var secondUserData = [String]() var name: String = "" override func viewDidLoad() { super.viewDidLoad() } override func viewWillAppear(_ animated: Bool) { super.viewWillAppear(animated) } /* This function gets the user account information from a JSON in a simple request */ private func loadUserData(completion: @escaping (_ myArray: [String]) -> Void) { let session = Twitter.sharedInstance().sessionStore.session() let client = TWTRAPIClient.withCurrentUser() let userInfoURL = "https://api.twitter.com/1.1/users/show.json" let params = ["user_id": session?.userID] var clientError : NSError? let request = client.urlRequest(withMethod: "GET", url: userInfoURL, parameters: params, error: &clientError) client.sendTwitterRequest(request) { (response, data, connectionError) -> Void in if connectionError != nil { print("Error: \(connectionError)") } do { let json = JSON(data: data!) if let userName = json["name"].string, let description = json["description"].string, let followersCount = json["followers_count"].int, let favouritesCount = json["favourites_count"].int, let followingCount = json["friends_count"].int, let lang = json["lang"].string, let nickname = json["screen_name"].string { self.userData.append(userName) self.userData.append(nickname) self.userData.append(String(followersCount)) self.userData.append(String(followingCount)) self.userData.append(String("22")) self.userData.append(lang) self.userData.append(description) self.userData.append("No country") completion(self.userData) } } } } /* This closure helps us to fill the labels once the request has been finished in loadUserData */ func manageUserData(label: UILabel, index: Int) { loadUserData { (result: [String]) in label.text = result[index] } } // MARK: - Table view data source override func numberOfSections(in 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 self.userData.count } override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { let rowNumber = indexPath.row let cellIdentifier = "TableViewCell" guard let cell = tableView.dequeueReusableCell(withIdentifier: cellIdentifier, for: indexPath) as? TableViewCellController else { fatalError("The dequeued cell is not an instance of TableViewCellController.") } switch rowNumber { case 0: cell.titlePlaceholder.text = "Name:" manageUserData(label: cell.valuePlaceholder, index: rowNumber) case 1: cell.titlePlaceholder.text = "Nickname:" manageUserData(label: cell.valuePlaceholder, index: rowNumber) case 2: cell.titlePlaceholder.text = "Followers:" manageUserData(label: cell.valuePlaceholder, index: rowNumber) case 3: cell.titlePlaceholder.text = "Following:" manageUserData(label: cell.valuePlaceholder, index: rowNumber) case 4: cell.titlePlaceholder.text = "Tweets:" manageUserData(label: cell.valuePlaceholder, index: rowNumber) case 5: cell.titlePlaceholder.text = "Language:" manageUserData(label: cell.valuePlaceholder, index: rowNumber) case 6: cell.titlePlaceholder.text = "Biography:" manageUserData(label: cell.valuePlaceholder, index: rowNumber) case 7: cell.titlePlaceholder.text = "Country:" manageUserData(label: cell.valuePlaceholder, index: rowNumber) default: cell.titlePlaceholder.text = "?" cell.valuePlaceholder.text = "?" } return cell } } 

任何想法为什么发生这种情况? 非常感谢你!!

UPDATE!

我解决了这个问题,在loadUserData()函数内的completion()之后添加self.tableView.reloadData()。 希望能帮助到你!

Swift解决scheme:

 tableView.reloadData() 

如果你不是从主线程调用它:

 DispatchQueue.main.async { self.tableView.reloadData() } 

收到请求后必须重新加载表格视图数据

 [self.tableView reloadData];