ios - 独特的 Realm 容器对象

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

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

这里使用了一个虚拟容器,用于保存带有模型的 List

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

我想知道,在这种设置下,当我在在线和离线设备上启动应用程序,然后使用离线设备在线时会发生什么。

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

但有时我会收到 2 个容器,但无法确定是什么原因造成的。

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

最佳答案

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

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

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

演示应用程序(以及 Realm 移动平台)确实支持离线,但仅在用户首次登录后(即最初生成这些容器对象时)。在那段时间之后,应用程序可以离线使用,在此期间所做的任何更改都会在下次联机时同步。

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

关于ios - 独特的 Realm 容器对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42041222/

相关文章:

swift - 从模板生成 Swift 文件

swift - 为 Realm 对象匹配分离的数组

Java/Android工作室: For loop - Same data shows multiple times

swift - 无法在 Realm swift 中编写字符串不等于的查询

ios - Xcode Playground 运行时间太长

ios - NotificationCenter 没有调用选择器

ios - Objective-C/C。当我尝试在 IOS 设备上获取 Mac 地址时,我得到了错误的值

ios - 如何在 iOS 中的表格 View 底部制作固定单元格?

xcode - Swift:单元格或标签是 UIcollectionView 中的 http 链接

ios - 是否可以使用不同的方式将数据从一个 TableViewCell 传输到另一个 TableViewCell?继续