我正在使用(并且喜欢)Siesta 与我的 Swift 应用程序中的 REST Web 服务进行通信。我已经实现了一系列 ResponseTransformers 来将 API 调用响应映射到模型类,以便 Siesta 资源自动解析为对象实例。这一切都很好。
我现在想实现一个 Siesta PersistantCache 对象来支持离线模式,方法是让 Siesta 将这些对象缓存到磁盘(而不是内存中),方法是将它们存储在 Realm 中。我不确定如何执行此操作,因为文档说(关于 EntityCache.writeEntity 函数):
这种方法可以——而且应该——检查实体的内容和/或标题,如果它不可编码,则忽略它。虽然它们可以应用基于类型的规则,但是,缓存实现不应应用基于资源或基于url 的规则;用于
Resource.configure(...)
选择缓存哪些资源以及由谁缓存。
为了符合本指南,我在服务配置期间根据 URL 模式匹配为每种资源类型创建了一个特定的 PersistentCache 对象:
class _GFSFAPI: Service {
private init() {
configure("/Challenge/*") { $0.config.persistentCache = SiestaRealmChallengeCache() }
}
但是,由于 EntityCache 协议方法仅包含对实体的引用(它公开原始内容但不公开类型化对象),我看不出在调用 EntityCache.writeEntity 期间如何调用领域写入方法或如何拉在 EntityCache.readEntity 期间离开领域的对象。
任何有关如何解决此问题的建议将不胜感激。