【发布时间】:2015-11-06 23:58:49
【问题描述】:
Parse 中似乎存在某种缓存问题,其中包含自定义对象数组。这是此问题的简单示例的link。让我描述一下简单的应用程序,然后是问题:
应用:
一个频道的简单聊天应用程序,唯一的功能是显示所有消息,并添加消息。我有一个自定义类“消息”和“聊天”(存储消息数组)。消息显示在 UITableView 中,并且有一个使用查询“重新加载”聊天的按钮。该查询使用“includeKey”来确保包含消息数组。当应用启动时,如果不存在聊天,它会创建一个带有空白消息数组的聊天。
Parse Starter Project 对该应用程序的唯一更改是:Chat.swift、Message.swift、AppDelegate.swift(用于设置应用程序 ID 和注册子类)、ViewController.swift 和故事板。
问题:
查询似乎检索缓存的数据(即它不会随着数据中的更新而更新)。
根据我的测试,生成“聊天”对象的设备最初不会出现此问题。但是,最初未生成“聊天”对象的设备确实存在此问题。
重现此问题的步骤:
- 下载示例代码here。
- 您将需要两台设备。在第一台设备(设备 A)上安装应用程序。请注意,当查询返回时没有生成一个“聊天”对象。仔细检查 Parse Core 是否生成了这个“聊天”对象。
- 在另一台设备(设备 B)上运行应用程序这次查询返回一个 Chat 对象。
- 通过点击加号按钮在设备 A 上添加消息,然后保存。请注意,这会保存消息,然后重新加载查询和表。仔细检查消息是否保存在 Core 中。
- 在设备 B 上重新加载表 - 应该会出现消息。太好了!
- 在设备B上添加消息,同步骤3。消息应该由查询返回。仔细检查消息是否保存在 Core 中。
- 在设备 A 上重新加载表 - 嗯?该消息未出现。三重检查消息是否保存在核心中。那是对的?为什么查询不返回?
- 刮头。
- 再次在设备 A 上构建并运行应用程序 - 现在确实出现了消息。什么?这是缓存问题吗?
其他诊断说明:
在我的实际应用中,我实施了 20 条消息的限制,之后第一条消息被删除。我注意到,在我开始删除消息后,这个明显的缓存问题就不再发生了。
【问题讨论】:
标签: ios parse-platform