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'迅速

使用 Parse (Swift 3) 注册用户时如何添加头像

在 Swift 中使用 Parse 使用 FB 登录的用户持久性

离线 Parse.com 时如何在 localdatastore 中保存图像 PFFile?