不适用于领域通知

时间:2019-07-03 11:10:18

标签: ios swift realm

中的表中删除项目时,我尝试使用领域数据库通知
func tableView(_ tableView: UITableView, editActionsForRowAt indexPath: IndexPath) -> [UITableViewRowAction]? {
        let deleteAction = UITableViewRowAction(style: .destructive, title: "delete") { (action, indexPath) in
          let index = indexPath.row
self.groupDao.deleteWithChilds(item: self.realmGroup![index])



        }
......

并使用标准通知:

     notificationToken = realmGroup.observe { [weak self] (changes: RealmCollectionChange) in
    //   guard let tableView = self?.tableView else { return }
    switch changes {
    case .initial:
        // Results are now populated and can be accessed without blocking the UI
        self!.mainTableView.reloadData()

    case .update(_, let deletions, let insertions, let modifications):
        // Query results have changed, so apply them to the UITableView
        print("from group realm")

        self!.mainTableView.beginUpdates()
        self!.mainTableView.insertRows(at: insertions.map({ IndexPath(row: $0, section: 0) }),
                                       with: .automatic)
        self!.mainTableView.deleteRows(at: deletions.map({ IndexPath(row: $0, section: 0)}),
                                       with: .automatic)
        self!.mainTableView.reloadRows(at: modifications.map({ IndexPath(row: $0, section: 0) }),
                                       with: .automatic)
        self!.mainTableView.endUpdates()
    case .error(let error):
        // An error occurred while opening the Realm file on the background worker thread
        // fatalError("\(error)")
        print(error)
    }
}

,并且效果很好。但是当我使用搜索栏并尝试从搜索结果中删除一个项目时,该项目将从数据库中删除,而不是从表中删除。

我的防沙漏过滤器:

 func searchBy(text: String) {
            if(text.isEmpty) {
                realmGroup = groupDao.getAllItemsSortByName()
            }else{
                realmGroup = groupDao.contains(name: text)
            }
mainTableView.reloadData()
}

0 个答案:

没有答案