1

クラス「myObject」の一連の PFObjects (本質的に辞書) があるとします。このクラスのオブジェクトには、キー "myDictionary" の辞書が含まれています。次に、「myDictionary」には、アクセスして「mySearchTerm」との一致を検索するキー「myKey」があります。すべての myObject オブジェクトをダウンロードしてから、それらを繰り返し処理してそれぞれの myKey をチェックしたくはありません。これは非常に非効率的だからです。findObjectsメッセージを使用して、一致するものだけを返したいです。

そのようなクエリは可能ですか?つまり、そのクラスのすべての PFObject をダウンロードせずに、PFObject のキーに割り当てられたディクショナリ内の値を検索するにはどうすればよいでしょうか?

簡単な方法があるとしたら、次のようになりますが、考えていることを明確にするために、containsKey 部分を作成しました。

PFQuery *objectQuery = [PFQuery queryWithClassName:@"myObject"];
[objectQuery whereKey:@"myDictionary" ~containsKey~:@"myKey" equalTo:"mySearchTerm"];
4

3 に答える 3

1

述語を含むクエリを使用してみてください。

NSPredicate *predicate = [NSPredicate predicateWithFormat:@"myDictionary.myKey = %@", @"mySearchTerm"];

PFQuery *objectQuery = [PFQuery queryWithClassName:@"myObject" predicate:predicate];
于 2013-06-28T22:19:15.793 に答える
1

これを行う最善の方法は、myDictionary をそれ自体で PFObject にすることです (そのため、NSMutableDictionary* ではなく PFObject* としてインスタンス化します)。次に、クエリを実行し、2 番目のクエリで、一致する親 PFObjects を取得します。

PFQuery *myDictionaryQuery = [PFQuery queryWithClassName:@"myDictionary"];
[myDictionaryQuery whereKey:@"myKey" equalTo:mySearchTerm];

PFQuery *myObjectQuery = [PFQuery queryWithClassName:@"myObject"];
[myObjectQuery includeKey:@"myDictionary"];
[myObjectQuery whereKey:@"myDictionary" matchesQuery:myDictionaryQuery];
于 2013-06-29T18:16:49.053 に答える