ios - Firebase 填充数组两次 -- Swift

标签 ios arrays swift uitableview firebase

我有两个字符串数组:一个保存订单号,一个保存地址。

我使用包含以下内容的函数从 viewDidAppear 中的 Firebase 提取数据:

    self.localOrderNumberArray.removeAll()
    self.localAddressArray.removeAll()

    self.orderNumbers.removeAll()
    self.addresses.removeAll()

    self.tableView.reloadData()

    if onItsWayCompanyNameStoreNumberCourierNumberRootRef != nil {

        let deliveryRef = onItsWayCompanyNameStoreNumberCourierNumberRootRef.childByAppendingPath("deliveries")

        deliveryRef.observeEventType(.ChildAdded, withBlock: { snapshot in

            self.orderNumbers.removeAll()
            self.addresses.removeAll()

            print(snapshot.value.objectForKey("orderNumber"))
            let orderNumberPulledFromFirebase = snapshot.value.objectForKey("orderNumber") as! String
            self.localOrderNumberArray.insert(orderNumberPulledFromFirebase, atIndex: 0)

            let addressPulledFromFirebase = snapshot.value.objectForKey("address") as! String
            self.localAddressArray.insert(addressPulledFromFirebase, atIndex: 0)

            self.orderNumbers = self.localOrderNumberArray
            self.addresses = self.localAddressArray

            self.tableView.reloadData()

        })
    }

该函数使用从 Firebase 提取的数据填充 UITableView。

当我第一次运行该应用程序时,一切都很好。我可以通过不同的函数将数据添加到 Firebase,上面的函数会将新数据拉入 UITableView 就好了。

但是,当我转到另一个 View Controller (在本例中为另一个 UITableView),然后返回到包含上述函数的 View 时,该函数两次填充订单号和地址数组当我添加新数据

如果我第二次转到另一个 UITableView,然后返回到包含上述函数的 View ,当我添加新数据时,该函数会填充订单号和地址数组 3 次。等等等等。

这是最奇怪的事情。我想不通,它快要把我逼到边缘了。请帮忙。

最佳答案

您正在 viewDidAppear 中调用 deliveryRef.observeEventTypeviewDidAppear 将在每次显示 ViewController 时调用。因此,当您转到其他 ViewController 并返回时,将再次调用 viewDidAppear 并再次注册 deliveryRef.observeEventType。因此,实际上有两个监听器在您的 viewController 中执行相同的工作,这会将重复数据添加到数组中。

您必须实现一种逻辑,以便在 ViewController 中仅执行一次 observeEventType

关于ios - Firebase 填充数组两次 -- Swift,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37283990/

相关文章:

ios - 在 iOS Swift 中设置按钮事件颜色的简单方法

iphone - NSInvocation需要NSMethodSignature

Java:什么是基于索引的数组访问,为什么它们很快?

swift - 无法使用 Swift Codable 解析响应

ios - 麦克风权限未按预期工作

ios - objectForKey 返回 null 但 nsdictionary 已满

javascript - jQuery,收集复选框并将选定的复选框放入数组,这可能吗?

java - 从数组中查找数字的所有索引 (Java)

arrays - Swift:将一组字典扁平化为一个字典

swift - iOS : Problem with horizontal centers alignment and layout