gpt4 book ai didi

ios - 在正确的地方调用 reloadData()

转载 作者:行者123 更新时间:2023-11-28 10:11:21 28 4
gpt4 key购买 nike

我正在尝试从 firebase 获取数据并传递给 tableview。

 // Model
import UIKit
import Firebase

struct ProfInfo {

var key: String
var url: String
var name: String

init(snapshot:DataSnapshot) {

key = snapshot.key
url = (snapshot.value as! NSDictionary)["profileUrl"] as? String ?? ""
name = (snapshot.value as! NSDictionary)["tweetName"] as? String ?? ""
}
}

// fetch
var profInfo = [ProfInfo]()

func fetchUid(){
guard let uid = Auth.auth().currentUser?.uid else{ return }
ref.child("following").child(uid).observe(.value, with: { (snapshot) in
guard let snap = snapshot.value as? [String:Any] else { return }
snap.forEach({ (key,_) in
self.fetchProf(key: key)
})
}, withCancel: nil)
}

func fetchProf(key: String){
var outcome = [ProfInfo]()
ref.child("Profiles").child(key).observe(.value, with: { (snapshot) in
let info = ProfInfo(snapshot: snapshot)
outcome.append(info)
self.profInfo = outcome
self.tableView.reloadData()
}, withCancel: nil)
}

//tableview
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return profInfo.count
}

func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {

let cell = tableView.dequeueReusableCell(withIdentifier: "followCell", for: indexPath) as! FollowingTableViewCell

cell.configCell(profInfo: profInfo[indexPath.row])

return cell
}

但是它返回一行,但 profInfo 实际上有两行。当我在 fetchProf 中实现 print(self.profInfo) 时,它会返回两个值。但是传给tableview之后,就变成了一个。我不确定,但我想原因是我将 reloadData() 放在了错误的位置,因为我遇到了断点并且 reloadData() 调用了两次。所以,我认为 profInfo 被新值所取代。我在不同的地方打电话但没有工作。我对么?如果是这样,我应该在哪里调用 reloadData()?如果我错了,我该如何解决?提前致谢!

最佳答案

您需要将新数据附加到 profinfo 数组。只需将 fetchProf 方法替换为:-

func fetchProf(key: String){     
var outcome = [ProfInfo]()
ref.child("Profiles").child(key).observe(.value, with: { (snapshot) in
let info = ProfInfo(snapshot: snapshot)
outcome.append(info)
self.profInfo.append(contentOf: outcome)
Dispatch.main.async{
self.tableView.reloadData()
}
} , withCancel: nil)
}

关于ios - 在正确的地方调用 reloadData(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47994744/

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