2

我有一个 Parse 应用程序,我想启用本地数据存储以供缓存/离线使用。在我的应用程序委托中,我设置了[Parse enableLocalDatastore];.

在我的查询(到服务器)中,我进行了正常查询,但我将结果固定在 fetch 上:

[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)。我怎么解决这个问题?

4

2 回答 2

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);
        } 
    });
}];
于 2014-12-15T21:37:56.740 回答
0

您是否看过他们关于如何查询本地数据存储的文档:

供你参考 :

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

于 2014-12-12T01:58:27.230 回答