2

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 は消費しません)。どうすればこの問題を解決できますか?

4

2 に答える 2

4

これは、 ParseinBackgroundの別の -type メソッド内でネストされた -type メソッドを実行したときに経験した既知のバグです。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 に答える