"错误:此对象在脱机缓存中不可用" Parse后端只发生一些事情

时间:2015-06-07 16:22:04

标签: ios parse-platform local-datastore

我目前在我的ios项目中添加了解析后端,并将其定义为与其本地数据存储一起使用。 这一切似乎工作正常,除非有时我收到"此对象在离线缓存中不可用"据我所知,在使用本地数据存储时根本没有缓存(在我的AppDelegate中启用它,如下所示:[Parse enableLocalDatastore];)。 问题是如果我重新打开应用程序,最终将成功检索该对象。 以前有人遇到过这个问题吗?

编辑: 我做的电话顺序是

PFQuery *query = [PFQuery queryWithClassName:className];
[query fromLocalDatastore];
[query whereKey:someKey equalTo:someObject];
[query includeKey:@"someKey1"];
[query includeKey:@"someKey2"];
[query orderByAscending:@"date"];
[query findObjectsInBackground];

为ios sdk 8.0构建并解析sdk 1.7.2

谢谢!

4 个答案:

答案 0 :(得分:1)

在将不同对象固定到本地数据存储区之前,您需要创建该不可用对象的强引用。如果没有强引用,对象将从脱机缓存中刷新,即使您固定的当前和不同对象也将被保存。因此,当您重新查询时,您会收到上面的错误消息。

答案 1 :(得分:1)

我有同样的问题。我的理由是我在代码中的两个位置固定了具有相同名称的相同查询对象。当我删除带有名称功能的引脚并简单地固定它们。一切都适合我。

答案 2 :(得分:0)

确保您还通过调用

固定了与查询相关的任何对象
[query includeKey:@"someKey1"];

指向可能需要的所有对象的所有指针。

答案 3 :(得分:0)

使用解析实时查询时收到此错误。我发现,只要通过实时查询“更新”了一个对象,就必须对其进行完全固定,以使该错误消失。我固定名字。这是我的功能。

extension PFObject {
func repin(className:String, completion: @escaping () -> Void) {
    self.unpinInBackground(withName: className) { (success, error) in
        if let error = error {
            print(error)
        } else {
            self.pinInBackground(withName: className) { (success, error) in
                if let error = error {
                    print(error)
                } else {
                    completion()
                }
            }
        }
    }
}
}