我很困惑。我有一个动态tableView
来显示我的数据和一个loadData()
方法,我基本上将数据从JSON加载到tableViewModel
。现在我一直想要在每次更新或刷新表时解决数据重复问题,我已经实现了这些:
override func viewDidDisappear(animated: Bool) {
super.viewDidDisappear(animated)
// To avoid duplication of data when the table updates or refreshes.
self.tableViewModel.removeAll(keepCapacity: false)
}
问题已解决。现在,当我在观看之间切换并返回tableView
时,它会给我index out of range
错误。我已经尝试在tableView
之后重新加载self.tableViewModel.removeAll
,但只是为我重新加载空tableView
,因为tableViewModel
为空。如果我在loadData()
之后致电self.tableViewModel.removeAll
,它会再次开始复制我的数据。
我该如何解决这个问题?我应该如何充分利用viewDidDisappear
,viewDidAppear
,viewWillDisappear
,viewWillAppear
而不重复我的数据,并将自己从index out range
错误中解脱出来?
答案 0 :(得分:0)
对我而言,它可以将self.tableViewModel.removeAll(keepCapacity: false)
从viewDidDisappear
的位置更改为我的oadData()
方法:
func loadData() {
// To avoid duplication of data when the table updates or refreshes.
self.tableViewModel.removeAll(keepCapacity: false)
print("Table View Model Cleared: \(self.tableViewModel)”)
// Now load data from the internet.
}
这样做是每次调用loadData()
时使用新数据刷新tableView,以便tableView不保留旧数据并将其与新数据重复。
这也使我免于fatal error: Index out of range
作为removeAll
,并且加载数据发生在一个方法而不是两个单独的方法中。当我在removeAll
中放置viewDidDisappear
时,每次切换到另一个视图时它都会清除tableViewModel
,并且在切换回来时,它会迷失在:{/ p>
func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return tableViewModel.count
}
在我看来,fatal error: Index out of range
告诉我们tableView中的行数与tableViewModel中的帖子数不匹配。这正是我们在numberOfRowsInSection
中返回的内容。
非常感谢任何建议和最佳做法。另外,在我错的任何地方纠正我。