Swift Parse 如何让应用离线工作?
Posted
技术标签:
【中文标题】Swift Parse 如何让应用离线工作?【英文标题】:Swift Parse how to make app works offline? 【发布时间】:2016-10-14 18:41:41 【问题描述】:我正在使用 swift 3.0 进行本地解析
我正在查询以从服务器获取结果。但如果没有连接,它不会显示我们得到的最后结果,因为失去连接。
所以我要做的是保存查询结果以在没有连接时查看它
这是查询:
var query = PFUser.query()
query = PFQuery(className: "_User")
// query?.fromLocalDatastore()
query!.whereKey("objectId", equalTo: PFUser.current()!.objectId!)
query!.findObjectsInBackground
(objects , error) -> Void in
if error == nil
for object in objects!
self.usernamelbl.text = object["username"] as! String
if let userp = PFUser.current()?["photo"] as? PFFile
userp.getDataInBackground
(imageData, error) -> Void in
if error == nil
self.profilepic.image = UIImage(data: imageData!)!
现在,如果应用关闭,我如何保存结果并离线查看? 任何帮助将不胜感激
【问题讨论】:
你有很多选择。我假设您正在尝试保存用户图像?如果您愿意,您可以将其保存到文件或将其保存到应用程序中的 CoreData。你想做什么取决于你。 谢谢,我要保存用户信息,并收到其他用户的视频、图像、消息。所以他仍然可以在离线模式下检查它们。有什么想法吗? 【参考方案1】:可以设置特定PFQuery
调用的缓存策略。要将副本保存到磁盘,并在再次访问网络之前依赖该副本,请设置 kPFCachePolicyCacheElseNetwork
策略。
然而,根据Parse question,这些缓存的大小显然有一个非常严格的限制。我不确定这些是否仍然适用于 Parse 的开源版本,但如果您想将更多信息保存到磁盘,使用更专用的数据持久性框架可能是合适的,例如 Core Data、SQLite 或 Realm(全面披露:我为 Realm 工作。:) )
出于图像文件的目的,我建议您手动管理磁盘上的缓存,而不是将其存储在 Parse 的缓存中(由于大小限制)。那里有一些很棒的图像缓存库(例如PINCache),可以很容易地做到这一点。
【讨论】:
啊,谢谢,我很感激,这似乎很辛苦,我不知道它是如何工作的,也许我会看看 PINCache 是如何工作的,因为我要保存图像、视频、消息等像那样。再次感谢您!以上是关于Swift Parse 如何让应用离线工作?的主要内容,如果未能解决你的问题,请参考以下文章
parse.com / iOS - 有没有办法以 json 格式下载整个类对象?
iOS Swift & Parse - getDataInBackground 不工作?
使用 Parse (Swift 3) 注册用户时如何添加头像