如果我不在tableview中使用,请下载功能工作,如果我使用它崩溃

时间:2016-10-22 10:49:47

标签: ios swift firebase firebase-realtime-database swift3

我在观察来自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。在控制台中它说“致命错误:索引超出范围 “因为用户数组中没有任何内容。

我不知道我做错了什么。

感谢您的帮助。

0 个答案:

没有答案