Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 我的单元格被复制以应用我对在线数据库所做的更改_Ios_Swift_Uitableview_Firebase_Firebase Realtime Database - Fatal编程技术网

Ios 我的单元格被复制以应用我对在线数据库所做的更改

Ios 我的单元格被复制以应用我对在线数据库所做的更改,ios,swift,uitableview,firebase,firebase-realtime-database,Ios,Swift,Uitableview,Firebase,Firebase Realtime Database,有了这段代码,我可以获得数据库的快照,并将数据加载到tableView中。但是,当我尝试对联机数据库进行更改时,会得到应用更改的重复单元格,而不是应用此更改的正常单元格 // Create reference to databse ref = Database.database().reference() // Retrieve data from firebase database and listen for changes ref.child("Clubs

有了这段代码,我可以获得数据库的快照,并将数据加载到tableView中。但是,当我尝试对联机数据库进行更改时,会得到应用更改的重复单元格,而不是应用此更改的正常单元格

    // Create reference to databse
    ref = Database.database().reference()

    // Retrieve data from firebase database and listen for changes
    ref.child("Clubs").observe(.value, with: { (snapshot) in
        print("clubs: \(snapshot)")

        if(snapshot.exists()) {
            let array:NSArray = snapshot.children.allObjects as NSArray

            for obj in array {
                let snapshot:DataSnapshot = obj as! DataSnapshot
                if let childSnapshot = snapshot.value as? [String : AnyObject] {
                    print("myClubs: \(childSnapshot)")

                    if let clubName = childSnapshot["name"] as? String, let banner = childSnapshot["bannerImage"] as? String {
                        print(clubName)
                        print(banner)

                        let club = Club(name: clubName, image: banner)
                        print("new club success: \(club)")
                        self.nightClubs.append(club)
                    }
                }
            }

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

        }

    })

无论何时
Clubs
中的任何值发生更改,您都在侦听器中执行代码。代码将俱乐部附加到
夜总会
数组,但不清除它。在重新填充之前,需要清空阵列:

// Retrieve data from firebase database and listen for changes
    ref.child("Clubs").observe(.value, with: { (snapshot) in
        print("clubs: \(snapshot)")
        self.nightClubs.removeAll() // empty array before adding values

        ...

无论何时
Clubs
中的任何值发生更改,您都在侦听器中执行代码。代码将俱乐部附加到
夜总会
数组,但不清除它。在重新填充之前,需要清空阵列:

// Retrieve data from firebase database and listen for changes
    ref.child("Clubs").observe(.value, with: { (snapshot) in
        print("clubs: \(snapshot)")
        self.nightClubs.removeAll() // empty array before adding values

        ...

谢谢你,珍!真的救了我的命很高兴能帮忙!如果这个答案对你有效,那么请接受它。谢谢谢谢你,珍!真的救了我的命很高兴能帮忙!如果这个答案对你有效,那么请接受它。谢谢