【发布时间】: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条形按钮项生成它们 -
再一次,代码应该与返回
true的canEditRowAt一起使用(顺便说一下,这是默认设置)。 ...该表不包含任何内容 也可以由 非可选空 数组表示,并且您可以摆脱所有可选绑定。
标签: swift realm tableview crud