【问题标题】:Delete Row in TableView using Realm使用 Realm 删除 TableView 中的行
【发布时间】:2019-09-02 23:49:59
【问题描述】:

尝试使用带有提交编辑样式功能的 TableView 中的删除行功能,但 Realm 似乎使这变得更加困难。

Function 最初是在没有使用 Realm 数据库的情况下创建的,只是一个用于填充 TableView 的数组。但是,使用 Realm 的方式并不完全一样,并且删除功能也不起作用。

override func tableView(_ tableView: UITableView, commit editingStyle: UITableViewCell.EditingStyle, forRowAt indexPath: IndexPath) {

       if editingStyle == .delete {

           if let courseForDeletion = courses?[indexPath.row] {
               do {
                   try realm.write {
                       realm.delete(courseForDeletion)
                   }
               } catch {
                   print("Error deleting course: \(error)")
               }

               tableView.deleteRows(at: [indexPath], with: .automatic)
           }
       }
   }

期望在给定行上滑动手势以生成红色删除功能,这通常在不使用 Realm 时发生。

【问题讨论】:

  • 不相关但从来没有insertRows/deleteRows 之后立即致电reloadData()insert/delete 方法更新 UI 动画。
  • @vadian 感谢您的洞察力——无论如何,关于为什么此方法在引入 Realm 后不能重现相同功能的任何想法?
  • 不,该方法应该有效。 canEditRowAt 是否实现返回false?但是deleteRows 行必须在if let 范围内。为什么courses 是可选的?表格视图也是可选的吗?
  • @vadian canEditRowAt 当前实现返回 true ,我将 deleteRows 推到 if let 范围内,但它仍然没有通过滑动手势响应。 courses 对象是可选的,因为最初该表不包含任何内容,用户可以通过提示 UIAlert 的addCourses 条形按钮项生成它们
  • 再一次,代码应该与返回truecanEditRowAt 一起使用(顺便说一下,这是默认设置)。 ...该表不包含任何内容 也可以由 非可选空 数组表示,并且您可以摆脱所有可选绑定。

标签: swift realm tableview crud


【解决方案1】:

是什么让你觉得删除功能不起作用?

要查看被删除的行,您需要调用 tableview.reloadData()

【讨论】:

  • 你需要调用 tableview.reloadData()。不,你没有。 deleteRows 确实更新了表格视图
猜你喜欢
  • 1970-01-01
  • 2020-05-27
  • 1970-01-01
  • 1970-01-01
  • 2013-12-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-12-25
相关资源
最近更新 更多