7

我目前将解析后端添加到我的 ios 项目中,并将其定义为使用其本地数据存储。这一切似乎工作正常,除了有时我收到“这个对象在离线缓存中不可用”据我所知,使用本地数据存储时根本没有缓存(在我的 AppDelegate 中启用它,如下所示:[解析 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

4 回答 4

1

我遇到过同样的问题。我的原因是我在代码中的两个位置固定了具有相同名称的相同查询对象。当我删除带有名称功能的引脚并简单地固定它们时。对我来说一切都很好。

于 2015-12-28T12:26:11.840 回答
1

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

于 2015-10-11T12:19:17.150 回答
0

确保您还通过调用固定任何可能与查询相关的对象

[query includeKey:@"someKey1"];

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

于 2015-11-28T19:17:59.163 回答
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()
                }
            }
        }
    }
}
}
于 2020-08-26T19:57:23.033 回答