Swift self.tableview.reloaddata()在抓取数据后不重新加载
所以基本上我从firebase获取数据并将其加载到我的tableview中我添加了一个快照侦听器来侦听更改,但是当更改发生时,我的tableview会重新加载任何想法为什么?idk如果我把它放错位置了Swift self.tableview.reloaddata()在抓取数据后不重新加载,swift,Swift,所以基本上我从firebase获取数据并将其加载到我的tableview中我添加了一个快照侦听器来侦听更改,但是当更改发生时,我的tableview会重新加载任何想法为什么?idk如果我把它放错位置了 //============================================================================================== func grabUserPosts(){ var userid : String!
//==============================================================================================
func grabUserPosts(){
var userid : String!
if Auth.auth().currentUser != nil{
userid = Auth.auth().currentUser!.uid
}else if(AccessToken.current != nil) {
userid = AccessToken.current!.userID
}
FirebaseReferece(.quoteMe).order(by: "timestamp", descending: true).whereField(rOWNERID, isEqualTo: userid).addSnapshotListener { (snapshot, error) in
if(error != nil){
print(error!.localizedDescription)
}else {
if snapshot != nil {
snapshot!.documentChanges.forEach({ (change) in
if change.type == .added {
// for alldocument in snapshot!.documents {
//let data = alldocument.data()
let data = change.document.data()
let text = data["quoteMeText"]as! String
let author = data["QuoteMeAuthor"] as? String
let PostInit = quoteME(authorID: author ?? "", quoteText: text)
self.userPosts.append(PostInit)
}
self.tableView.reloadData()
})
}
}
}
}
在主线程和循环外部调用它
DispatchQueue.main.async {
self.tableView.reloadData()
}
您的函数将如下所示
func grabUserPosts(){
var userid : String!
if Auth.auth().currentUser != nil{
userid = Auth.auth().currentUser!.uid
}else if(AccessToken.current != nil) {
userid = AccessToken.current!.userID
}
FirebaseReferece(.quoteMe).order(by: "timestamp", descending: true).whereField(rOWNERID, isEqualTo: userid).addSnapshotListener { (snapshot, error) in
if(error != nil){
print(error!.localizedDescription)
}else {
snapshot?.documentChanges.forEach({ (change) in
if change.type == .added {
// for alldocument in snapshot!.documents {
//let data = alldocument.data()
let data = change.document.data()
let text = data["quoteMeText"]as! String
let author = data["QuoteMeAuthor"] as? String
let PostInit = quoteME(authorID: author ?? "", quoteText: text)
self.userPosts.append(PostInit)
}
})
DispatchQueue.main.async {
self.tableView.reloadData()
}
}
}
}
但请注意,这是斯威夫特!摆脱那些丑陋的客观检查。如果快照!=nil{snapshot!.documentChanges…与
snapshot?.documentChanges…
这是你在@vadian写的漂亮的一行。。。