BFTask
Parseと組み合わせてクエリを実行しています。タスク内には、ネストされたクエリがあります。complete
外側のクエリが追加するために必要なデータ(内側のクエリによってフェッチされたデータを含む) のフェッチを完了した場合にのみ、タスクを返したいと考えています。メイン スレッドを使用して既に解決策を達成しましたが、ユーザー インターフェイスをブロックしたくありません。
+ (BFTask*)theTask {
BFTask *task = [BFTask taskFromExecutor:[BFExecutor defaultExecutor] withBlock:^id{
NSMutableArray *complete = [NSMutableArray new]; //do not return complete until it has been populated by relationObj's
[[QueryLibrary queryA] findObjectsInBackgroundWithBlock:^(NSArray * _Nullable objects, NSError * _Nullable error) {
for(PFObject *obj in objects) {
PFQuery *relationQuery = [obj relationForKey:@"aRelation"].query;
[relationQuery findObjectsInBackgroundWithBlock:^(NSArray * _Nullable objects, NSError * _Nullable error) {
for(PFObject *relationObj in objects) {
//inspect and possibly augment relationObj...
[complete addObject: relationObj];
}
}];
}
}];
return complete;
}];
return task;
}
queryA
リレーションを含めるためにクエリ ( ) を再構築しようとしました。リレーションを含めようとすると、次のエラーが発生します。
+ (PFQuery *)queryA {
PFQuery *query = [PFQuery queryWithClassName:@"aPFObjectSubclass"];
//include other qualifiers...
[query includeKey:@"aRelation"]; //[Error]: field aRelation cannot be included because it is not a pointer to another object (Code: 102, Version: 1.11.0)
[query whereKeyExists:@"aRelation"]; // [Error]: Unsupported query operator on relation field: aRelation (Code: 102, Version: 1.11.0)
return query;
}