我使用realm db来表示UITableView,DB是如此动态,它将每毫秒更改或修改。
我列出了他们的文档中提到的类似通知。
extension UITableView {
func applyChanges<T>(changes: RealmCollectionChange<T>) {
switch changes {
case .initial: reloadData()
case .update(_, let deletions, let insertions, let updates):
let fromRow = {(row: Int) in
return IndexPath(row: row, section: 0)}
beginUpdates()
deleteRows(at: deletions.map(fromRow), with: .automatic)
insertRows(at: insertions.map(fromRow), with: .automatic)
reloadRows(at: updates.map(fromRow), with: .none)
endUpdates()
default: break
}
}
}
myTableViewViewController.swift
//在ViewDidload中
_ = dbfiles?.observe(self.tableView.applyChanges)
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: "MyCell") as! MyCell
if indexPath.row <= (dbfiles?.count)! {
// update cell info
}
return cell
当我滚动到结束或反复时,我正在崩溃,如下所示
@throw RLMException(@"Index %zu is out of bounds (must be less than %zu).",
e.requested, e.valid_count);
建议我如何优雅地处理这个问题。