iOS アプリにバックエンド サービス parse.com を使用していますが、適切にクエリを実行するのに問題があります。メソッド whereKey:matchesKey:inQuery; について助けが必要です。
私はこのコードを持っています:
//NOT WORKING
PFQuery *query1 = [PFQuery queryWithClassName:@"Object"];
PFQuery *query2 = [PFQuery queryWithClassName:@"ObjectsRelations"];
[query2 whereKey:@"user" equalTo:[PFUser currentUser]];
[query1 whereKey:@"objectId" matchesKey:@"objectPointer" inQuery:query2];
[query1 findObjectsInBackgroundWithBlock:^(NSArray *objects, NSError *error) {
// No objects
}];
それは私が望むように機能していません。クラス「ObjectsRelations」のキー「objectPointer」(クラス Object のインスタンスへのポインター) をクエリ 1 の実際のオブジェクトと比較する方法をいくつか試しました。キーobjectIdは単なる文字列であり、キーobjectPointerはオブジェクトへのポインタであるため、思い通りに機能しません。
このコードを実行すると、意図した結果が得られますが、実際の objectId を文字列として取得するには、2 つの API 要求を行う必要があります。
//WORKING
PFQuery *query = [PFQuery queryWithClassName:@"Object"];
PFQuery *query2 = [PFQuery queryWithClassName:@"ObjectRelations"];
[query2 whereKey:@"user" equalTo:[PFUser currentUser]];
[query2 findObjectsInBackgroundWithBlock:^(NSArray *objects, NSError *error) {
PFObject *firstObject = [((PFObject*)[objects firstObject]) objectForKey:@"objectPointer"];
[query whereKey:@"objectId" equalTo:firstObject.objectId];
[query findObjectsInBackgroundWithBlock:^(NSArray *objects, NSError *error) {
//Getting the objects correctly from the class Object!
}];
}];
単一の api-request でこれを行う方法は? クラスのインスタンスをクエリでクラスのポインタと比較する方法は?
このようなことは私がやりたいことです:(疑似コード)
[query1 where:SELF matches:@"objectPointer" inQuery:query2];
助言がありますか?