使用Realm,我应该使用List对象或Results对象作为UITableView的数据源吗?

时间:2016-10-18 05:46:22

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

Realm中至少使用了两种主要的收集类型:

  1. List
  2. Results
  3. Results对象文档中的相关说明如下:

      

    结果是从Realm返回的自动更新容器类型   对象查询。

    因为我希望我的UITableView响应Realm对象服务器上的任何更改,我真的认为我希望我的UITableViewResults对象支持。事实上,我认为由于这个原因,我总是希望Results对象支持我的UI。只有文档中List对象的描述才能加强这一点:

      

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

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

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

2 个答案:

答案 0 :(得分:4)

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

如果已经存储在您的Realm中的List表示的数据与您希望在表格视图中显示的内容相对应,那么您当然应该使用它来支持它。列表有一个有趣的属性,因为它们是隐式排序的,有时可能会有所帮助,就像您在上面链接的教程中一样,用户可以重新排序任务。

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

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

答案 1 :(得分:2)

您应该使用结果<>因为结果是自动更新以支持您的UITableView。 List可用于链接Realm模型中的子模型。结果用于查询Realm对象的位置,您应该添加一个Realm Notification Token,以便了解结果何时更新并采取必要的操作(重新加载表视图等)。在此处查看领域通知:https://realm.io/docs/swift/latest/#notifications

P.S。该示例中的数据只是静态的,没有观察到任何变化