IMConversation 读取本地缓存报错

try conversation.queryMessage(limit: limit, policy: .onlyCache, completion: { })

iOS SDK 的缓存是默认开启的,并没有关闭缓存。当使用上面的 API 获取本地缓存时候,会报错:

LCError(code: 9976, reason: Optional("Local Storage not open."), userInfo: nil, underlyingError: nil)

没找多相关解决方案,请解答!

SDK 版本信息:
- LeanCloud (16.3.0):
- LeanCloud/IM (= 16.3.0)
- LeanCloud/Storage (= 16.3.0)
- LeanCloud/IM (16.3.0):
- FMDB (~> 2.7.0)
- LeanCloud/Storage
- Starscream (~> 3.1.0)
- SwiftProtobuf (~> 1.5.0)
- LeanCloud/Storage (16.3.0):
- Alamofire (~> 4.8.0)

现在不会报错了,但是查询的结果一直为空是怎么回事。。。

发现一对一单聊的情况,只有先从网络获取数据后,才能在 cache 中查找到数据,Demo 貌似也是这个逻辑

难道说缓存的数据没有保存在本地吗,只是 memory cache?(另外,我也好想确实没找到删除本地某个 conversation 聊天记录的 API)

可是有另一点疑惑的就是,重新打开 app 后,聊天室( policy == .onlyCache)却依然可以查询到数据。。。

这个逻辑有什么问题?

聊天室和临时会话没有本地缓存机制,永远走网络。

这个 cache 是磁盘缓存还是内存缓存?

会话有内存和磁盘两种缓存。

消息只有磁盘缓存。

这里我忘了说场景,就是一个新用户创建一个会话,发送一条消息,然后退出聊天界面,再重新进入聊天界面的时候,使用 .onlyCache 去获取本地缓存,发现结果一直都是空的,我猜测缓存消息的时机不是在消息发出或者接收成功后缓存的,所以导致找不到缓存的聊天记录。。。可以解答一下消息是什么时候被写入磁盘缓存的吗?

SDK 的消息缓存逻辑是「只缓存消息查询的结果(且数量大于 2)」。

明白了,感谢答疑