【问题标题】:With Realm, should I use a List object or Results object as the data source for a UITableView?使用 Realm,我应该使用 List 对象还是 Results 对象作为 UITableView 的数据源?
【发布时间】:2016-10-18 05:46:22
【问题描述】:

Realm 中至少使用了 2 种主要的集合类型:

  1. List
  2. Results

Results 对象文档中的相关描述说:

Results 是 Realm 中的一种自动更新容器类型,返回自 对象查询。

因为我希望我的 UITableView 响应 Realm 对象服务器上的任何更改,我真的想我希望我的 UITableView 得到一个 Results 对象的支持。事实上,出于这个原因,我想我总是希望有一个 Results 对象来支持我的 UI。这仅通过文档中对 List 对象的描述得到加强:

List是Realm中用于定义to-many的容器类型 关系。

当然,List 似乎专注于数据建模......所以,作为 Realm 的新手并且只是阅读 API,我认为答案是使用 Results 对象,但 tutorial (Step 5)使用List 对象,而RealmExamples 示例代码使用Results

我错过了什么?我应该使用List 对象来支持我的UITableViews 吗?如果有,原因是什么?

【问题讨论】:

    标签: ios swift uitableview realm realm-mobile-platform


    【解决方案1】:

    简短回答:如果已经存在与您希望在表格视图中显示的内容非常匹配的List,则使用Results

    如果由List 表示的已经存储在您的领域中的数据对应于您希望在表格视图中显示的数据,您当然应该使用它来支持它。列表有一个有趣的属性,即它们是隐式排序的,这有时会很有帮助,就像您在上面链接到的教程中一样,用户可以在其中重新排序任务。

    Results 包含 Realm 中查询的结果。运行此查询通常比访问List 具有更高的运行时开销,具体程度取决于查询的复杂性和领域中的项目数。

    话虽如此,突变List 也会影响性能,因为它是以原子方式写入文件的。因此,如果这是经常更改的内容,Results 可能更合适。

    【讨论】:

      【解决方案2】:

      您应该使用 Results,因为 Results 会自动更新以支持您的 UITableView。 List 可用于链接 Realm 模型中的子模型。其中结果用于查询领域对象,您应该添加领域通知令牌,以便您知道结果何时更新并采取必要的操作(重新加载表视图等)在此处查找领域通知:https://realm.io/docs/swift/latest/#notifications

      附:该示例中的数据只是静态的,没有观察到任何变化

      【讨论】:

      • 列表和结果都是自动更新的集合。
      猜你喜欢
      • 2016-04-10
      • 1970-01-01
      • 2012-01-19
      • 1970-01-01
      • 1970-01-01
      • 2021-12-26
      • 2011-04-02
      • 2012-01-09
      • 1970-01-01
      相关资源
      最近更新 更多