我在观察来自firebase的数据时遇到问题,基本上我有2个观察员从Firebase观察数据。
我正在检索2种类型的词典,用户和帖子。
帖子一个正常工作,但是用户不能正常工作。
当我不在tableview中使用时,用户可以正常工作。
这是第一篇文章:
func downloadFirebasePostData(){
DataService.ds.REF_POSTS.child(selectedTeamEnglish).child(postId).observeSingleEvent(of: .value,with: { (snapshot) in
print("azat: entered in downloadfirebase post number \(snapshot.childrenCount)")
if let postDict = snapshot.value as? Dictionary<String,Any>{
print("azat:entered in postdict")
let post = Post(postKey: self.postId, postData: postDict)
print("AZAT: POSTDICT in post \(postDict["like"])")
self.posts.insert(post, at: 0)
}
print("AZAT: Post count in postvc \(self.posts.count)")
self.tableView.reloadData()
})
}
downloadFirebasePostData()工作正常,我可以在tableView中使用它。这是用户之一:
func downloadUserData(){
if let currentUser = FIRAuth.auth()?.currentUser{
print("AZAT: download user data id \(currentUser.uid))")
DataService.ds.REF_USERS.child(currentUser.uid).observeSingleEvent(of: .value, with: {(snapshot) in
print("AZAT: userdict is \(snapshot.value)")
if let userDict = snapshot.value as? Dictionary<String,Any>{
print("AZAT: userdict is \(snapshot.value)")
let user = User(userData: userDict)
self.users.insert(user, at: 0)
print("AZAT: user count\(self.users.count)")
}
self.tableView.reloadData()
})
}
}
downloadUserData()函数无法正常工作。
我甚至无法在控制台上看到打印行。
print("AZAT: userdict is \(snapshot.value)")
我试着不在tableView中使用users数组,而且downloadUserData()函数运行正常。
我在控制台上看到了字典。 tableView部分是:
if indexPath.section == 0 {
let cell = tableView.dequeueReusableCell(withIdentifier: "PostCell") as! PostCell
cell.likeButton.tag = 0
cell.likeButton.addTarget(self, action: #selector(PostVC.postLikePressed), for: .touchUpInside)
cell.dislikeButton.tag = 0
cell.dislikeButton.addTarget(self, action: #selector(PostVC.postDislikedPressed), for: .touchUpInside)
print("AZAT: fillcell in dequeu section 0")
if let img = PostVC.imageCache.object(forKey: users[0].profilePhoto as NSString){
cell.fillCell(post: posts[0],img: img,user: users[0])
return cell
}else{
cell.fillCell(post: posts[0],img: nil,user: users[0])
return cell
}
所以基本上我下载数据,把它放在数组中,并在tableView中更新UI。在控制台中它说“致命错误:索引超出范围 “因为用户数组中没有任何内容。
我不知道我做错了什么。
感谢您的帮助。