如果没有连接,解析平台中是否有一种方法可以回退到本地数据存储?
我知道这里有pin / pinInBackground,所以我可以将任何对象固定到LocalDataStore。
然后我可以查询localdatastore以获取该信息。
但是,我总是想首先获取服务器数据,如果失败,则获取本地数据。
是否可以自动执行此操作?
(或我必须将所有内容固定在本地,然后远程查询,如果失败,然后在本地查询)
好问题。
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
当然我会固定从服务器返回的所有结果。