【问题标题】:Swift UITableView Realm wrong order after deleteSwift UITableView Realm删除后顺序错误
【发布时间】:2019-04-01 06:54:34
【问题描述】:

我在 Realm 中有一个数据库,它显示在一个运行良好的 UITableView 中。我添加了一个删除功能,如下所示。

if let item = items?[indexPath.row] {
                do {
                    try realm.write {
                        realm.delete(item)
                    }
                } catch {
                    print("Error deleting item, \(error)")
                }
                tableView.reloadData()
            }

假设我在数据库中有一些数据,例如 1、2、3、4、5。当我删除“2”时,我希望它像 1,3,4,5 但它是 1,5,3,4。因此,最后一个条目分别显示在底部的条目将始终替换已删除的数据。我该如何解决?

【问题讨论】:

  • 您应该在显示之前对列表进行排序
  • 有几种选择: 1)按代码排序。即加载您想要的结果,对其进行排序,然后重新加载表格视图 2)让领域做繁重的工作并在数据呈现给应用程序之前对其进行排序。然后重新加载tableView。问题中没有足够的信息来了解您的 tableView 数据源是什么 - 它是领域结果对象还是从领域结果填充的数组。

标签: swift uitableview sorting realm


【解决方案1】:

对象是领域如果您希望它们按顺序存储为无序,那么您必须应用下面的代码或将其存储为列表。

let result = realm.objects(ModelClass).sorted("attribute", ascending: true)
  • ModelClass 是您的领域对象类的名称
  • 属性是 您想要它们的基础上的对象属性。

希望对你有所帮助。

【讨论】:

  • 如果我将代码放入 viewDidLoad 则无法正常工作,然后 tableview 已排序,但未按应有的方式显示
  • 你要删除的地方,然后放这个排序逻辑,然后重新加载tableView的数据。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-07-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多