tst*_*eve 4 arrays uitableview ios firebase swift
我有两个String数组:一个包含订单号,另一个包含地址.
我使用包含以下内容的函数从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()
})
}
Run Code Online (Sandbox Code Playgroud)
该函数使用从Firebase提取的数据填充UITableView.
当我第一次运行应用程序时,一切都很好.我可以通过不同的函数将数据添加到Firebase,上面的函数会将新数据拉入UITableView.
但是,当我转到另一个视图控制器(在这种情况下是另一个UITableView),然后返回到保存上述函数的视图时,该函数在添加新数据时填充订单号和地址数组两次.
如果我第二次转到另一个UITableView,然后回到上面保存上述函数的视图,当我添加新数据时,该函数会填充订单号和地址数组三次.等等等等.
这是最奇怪的事情.我无法理解,而且它会让我超越边缘.请帮忙.
您正在呼叫deliveryRef.observeEventType在viewDidAppear.viewDidAppear每次呈现ViewController时都会调用它.因此,当您转向其他ViewController并返回时,viewDidAppear将再次调用并再次deliveryRef.observeEventType注册.因此有效地有两个监听器在viewController中执行相同的工作,这将向数组添加重复数据.
您必须observeEventType在ViewController中实现仅执行一次的逻辑.
| 归档时间: |
|
| 查看次数: |
605 次 |
| 最近记录: |