唯一的Realm容器对象

时间:2017-02-04 13:58:18

标签: ios swift realm realm-mobile-platform realm-object-server

我在Realm的任务演示应用程序之后实现了实时同步。

使用虚拟容器来保存模型的List

演示应用程序似乎不支持离线使用。

我想知道在给定此设置的情况下,我会在在线设备和离线设备上启动应用程序,然后使用离线设备联机。

我最初的期望是我以2个容器结束(这将是一个无效状态),但是当我测试时,最后只有一个容器。

但有时我会得到2个容器,并且无法确定是什么导致了这个原因。

那么问题是,这究竟是如何运作的?我假设当我第一次同步离线设备时容器通常不重复的原因是它被处理为同一个对象,可能是因为它没有主键或什么?但那么为什么它有时会重复?这里最好的做法是什么?我是否可能必须使用主键或在连接后检查是否有重复,如果是,则手动合并容器?

1 个答案:

答案 0 :(得分:1)

目前,Realm Tasks只是在尝试添加新的基本列表容器对象之前检查默认Realm是否为空。如果在检查发生时同步过程尚未完成,则可以创建第二个容器。在本地网络上测试应用程序时,这通常不是问题,因为下载速度非常快,但我们肯定应该对此进行更彻底的测试。

添加主键肯定有帮助,因为这意味着如果在本地创建第二个列表,它将与从服务器下载的版本合并。

当第二台设备通过新的进度通知系统连接到用户的Realm Mobile Platform帐户时,我们最近一直专注于“入职”流程。更合乎逻辑的方法是在登录后等待同步完成初始下载,然后检查对象是否存在。文档完成后,我们很可能会改进Realm Tasks如何处理这个问题。

演示应用程序(以及Realm Mobile Platform)确实支持离线,但仅在用户首次登录后(即最初生成这些容器对象时)。在此之后,这些应用程序可以脱机使用,并且在此期间完成的任何更改将在下次联机时进行同步。

我们计划构建“匿名用户”功能,用户可以立即开始使用该应用程序(甚至是离线),然后在他们登录之前所做的任何更改(由于他们处于脱机状态)然后转移到用户帐户。