如何在分配给PFObject键的字典中搜索值,而不下载该类的所有PFObject(iOS/Parse)



假设我有一组类为"myObject"的PFObjects(本质上是字典)。此类的对象包含关键字"myDictionary"的字典。"myDictionary"有一个密钥"myKey",我想访问它并根据"mySearchTerm"搜索匹配项。我不想下载所有的myObject对象,然后对它们进行迭代,在每个对象中检查myKey,因为这会非常低效。我想使用findObjects消息只返回匹配项。

这样的查询可能吗?换句话说,在不下载该类的所有PFObject的情况下,如何在分配给PFObject键的字典中搜索值?

如果有一个简单的方法,它可能会是什么样子,但我制作了容器。关键部分是澄清我正在考虑的:

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

尝试使用带有谓词的查询:

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

似乎最好的方法是将myDictionary本身作为PFObject(因此将其实例化为PFObject*而不是NSMutableDictionary*)。然后我可以查询它,然后在第二个查询中检索匹配项的父PFObjects。

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

我刚刚通过使用NSPredcate:自己解决了这个问题

NSString *value        =    @"myvalue";
NSPredicate *predicate =    [NSPredicate predicateWithFormat:@"myDictionary.myKey = %@",value];
PFQuery *query         =    [PFQuery queryWithClassName:@"ClassName" predicate:predicate];
[query includeKey:@"myDictionary"];

最新更新