我是Swift的新手,来自Restkit,我找到了Siesta,它似乎是一个解决常见问题的可靠库。 目前我正试图弄清楚如何处理我的应用程序的模型层及其持久性。 CoreData是Apple推出的一种方法,而像MagicalRecord这样的方法让它变得更加容易。
但是,Siesta不处理CoreData,我不清楚缓存的工作原理(或实现的程度如何:
Siesta目前不包含EntityCache的任何实现,但未来的版本将会。
http://bustoutsolutions.github.io/siesta/api/Caching.html
从示例中,我可以看到您在Swift代码中定义模型: https://github.com/bustoutsolutions/siesta/blob/master/Examples/GithubBrowser/Source/Model/User.swift
那么:这是模型层的最佳方法还是CoreData / MagicalRecord有角色?在这种情况下如何完成缓存,它会在应用程序启动之间存活吗?
谢谢!
答案 0 :(得分:0)
第一个问题是:本地数据库(如Core Data或Realm)为您解决了什么问题?根据答案,您可能不需要 - 或者Siesta可能不适合您。
“我只需要缓存”
Siesta免费提供内存缓存。如果您需要的只是缓存以在应用程序运行时加快速度(即防止冗余请求,在VC上显示数据等),那么您可能不需要打扰EntityCache或本地数据库。
大多数应用属于此类别。
“我需要离线访问”
如果您需要持久缓存以进行脱机访问或使用陈旧数据快速启动,那就是EntityCache的用途。您仍然可能不需要本地数据库;一个简单的键值缓存就可以了。不幸的是:
“我需要一个可查询的数据库”
也许您的需求不仅仅是缓存。也许您想从许多不同的API请求中获取数据并对其进行查询,例如“选择所有以前提供的小部件,其供应商所在地位于莫桑比克。”这显然是数据库的工作。
此时,您不仅仅是缓存;您将保持本地状态与远程状态同步,并独立查询远程和本地副本。对于非常依赖环境的解决方案来说,这是一个混乱的问题,远远超出了Siesta的范围。
你可以让Siesta使用本地数据库,但它会变得混乱。如果您可以避免改变本地数据库,使其成为来自服务器的权威数据的单向镜像,那么您的生活将是最简单的。