解析平台联机模式,如果超时/网络问题,则脱机回退到离线状态

问题描述 投票:0回答:1

如果没有连接,解析平台中是否有一种方法可以回退到本地数据存储?

我知道这里有pin / pinInBackground,所以我可以将任何对象固定到LocalDataStore。

然后我可以查询localdatastore以获取该信息。

但是,我总是想首先获取服务器数据,如果失败,则获取本地数据。

是否可以自动执行此操作?

(或我必须将所有内容固定在本地,然后远程查询,如果失败,然后在本地查询)

parse-platform offline
1个回答
0
投票

好问题。

Parse具有缓存查询的概念。 https://docs.parseplatform.org/ios/guide/#caching-queries

缓存查询的有趣功能是您可以指定-“如果没有网络”。但是,这仅在您先前已缓存查询结果时才有效。我还发现丢失网络连接和缓存的查询之间的延迟,因为它意识到丢失的网络使整个功能有些混乱。

我如何解决此问题的方法是结合使用AlamoFire库和固定对象。我之所以选择使用AlamoFire库,是因为它得到了很好的支持,并且可以立即发现网络连接下降。我只有几百条记录,所以我不必担心固定对象,而且性能似乎也不会受到影响。所以这是我的工作方式。...

在类的顶部定义一些类对象

// Network management
private var reachability: NetworkReachabilityManager!
private var hasInternet: Bool = false

在视图唤醒时调用方法

// View lifecycle
override func awakeFromNib() {
        super.awakeFromNib()
        self.monitorReachability()
    }

当网络可用性更改时更新对象。我知道可以改进此方法。

private func monitorReachability() {
        NetworkReachabilityManager.default?.startListening { status in
            if "\(status)" == "notReachable" {
                self.hasInternet = false
            } else {
                self.hasInternet = true
            }
            print("hasInternet = \(self.hasInternet)")
        }
    }

然后,当我调用查询时,在设置查询对象时会有一个开关。

// Start setup of query
let query = PFQuery(className: "mySecretClass")

if self.hasInternet == false {
    query.fromLocalDatastore()
    }
// Complete rest of query configuration

当然我会固定从服务器返回的所有结果。

© www.soinside.com 2019 - 2024. All rights reserved.