gpt4 book ai didi

ios - TableView不显示数据

转载 作者:行者123 更新时间:2023-11-30 12:10:57 24 4
gpt4 key购买 nike

我正在尝试用从 GET 请求收到的一些数据填充我的 UITableView。我不知道为什么,但如果在我的 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
}
}

知道为什么会发生这种情况吗?非常感谢!!

更新!

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

最佳答案

快速解决方案:

tableView.reloadData()

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

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

关于ios - TableView不显示数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46065762/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com