Realm中至少使用了两种主要的收集类型:
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
吗?如果是这样,原因是什么?
答案 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。该示例中的数据只是静态的,没有观察到任何变化