PFQuery pinAllInBackground:block:永远不会完成

时间:2014-12-12 01:53:20

标签: ios parse-platform pfquery pfobject

我有一个Parse应用程序,我想启用本地数据存储以进行缓存/脱机使用。在我的应用代表中,我设置了[Parse enableLocalDatastore];

在我的查询中(到服务器),我正在进行正常查询,但我在获取时固定结果:

[followingsQuery findObjectsInBackgroundWithBlock:^(NSArray *objects, NSError *error) {
    [PFObject pinAllInBackground:objects block:^(BOOL succeeded, NSError *error) {
        NSLog(@"er: %@", error);
    }];
    ... //rest of my handler
}];

但是,永远不会调用完成块(NSLog(@"er: %@", error);)。甚至没有错误。我到处都有断点。 pinAllInBackground:block:被调用,但它的完成处理程序从未被调用(我的应用程序已连续运行2分钟,它只能固定100个对象,因此它应该是即时的)。我也试过pinAllInBackground:withName:block:,但没有区别。我已经尝试了pinAll:并且它永远不会返回,阻塞调用线程(它不会消耗任何CPU)。我该如何解决这个问题?

2 个答案:

答案 0 :(得分:4)

这是我在Parse中的另一个inBackground - 类型方法中运行嵌套inBackground - 类型方法时遇到的已知错误。当前的解决方法是使用不同的调度方法,例如Grand Central Dispatch。

试试这个:

[followingsQuery findObjectsInBackgroundWithBlock:^(NSArray *objects, NSError *error) {
    dispatch_async(dispatch_get_main_queue(), ^{
        NSError *error = nil;
        id result = [PFObject pinAll:objects error:&error];
        if (error) {
            NSLog("error: %@", error);
        } 
    });
}];

答案 1 :(得分:0)

您是否查看了有关如何查询本地数据存储的文档:

供您参考:

https://parse.com/docs/ios_guide#localdatastore-find/iOS