在查询其属性(数组)

时间:2015-05-07 14:16:52

标签: ios parse-platform

我有一个“Book”类,包含作者,页码,发布日期等一般信息。该类还包含一个数组“localizations”,其中包含指向“BookLocalization”类的多个对象的指针。

每个“BookLocalization”对象都有一个“langageCode”来识别它的语言(en,de,fr,es,...)和其他本地化的信息,如“plot”。

我想查询“Book”类,同时只为其“本地化”获取一个特定的语言(“langageCode”),所以我没有为每个“Book”获取一个包含所有“本地化”的数组

是否可以在一个请求中?这样的要求会真正减轻我的要求。想象一下,如果我支持50个或更多......

我真的很感激任何帮助!

更新:这是我尝试过的没有成功

PFQuery *innerQuery = [PFQuery queryWithClassName:@"BookLocalization"];
[innerQuery whereKey:@"langageCode" equalTo:@"de"];

PFQuery *query = [PFQuery queryWithClassName:@"Book"];
[query whereKey:@"localizations" matchesQuery:innerQuery];
[query whereKey:@"title" equalTo:@"Foundation"];
[query findObjectsInBackgroundWithBlock:^(NSArray *objects, NSError *error) {
    PFObject *firstObject = (PFObject*)objects.firstObject;
    NSLog(@"%@", firstObject[@"localizations"]);
}];

我得到了什么:

(
    "<BookLocalization: 0x600000121360, objectId: 87NFuvWcCa, localId: (null)> {\n}",
    "<BookLocalization: 0x600000120460, objectId: SzORHjuI0y, localId: (null)> {\n}",
    "<BookLocalization: 0x6000001212c0, objectId: qzq7FGDTtI, localId: (null)> {\n}",
    "<BookLocalization: 0x600000120640, objectId: jc04H6L3uf, localId: (null)> {\n}"
)

我仍然获得本书的所有本地化,不仅仅是“de”,就像我在这种情况下一样。任何的想法 ?也许我应该以其他方式设计它?

1 个答案:

答案 0 :(得分:0)

执行此操作的方法是在BookLocalization上使用innerQuery形成whereKey:@"languageCode" equalTo:@"de",例如,对于德语。

但是你不会明确地运行那个内部查询。而是将其作为参数传递给Book whereKey:@"localizations" matchesQuery:innerQuery上的查询。在Book上运行此查询将完成工作。

(当然,这里运行的确有两个查询,但是innerQuery是由parse.com运行的,所以从客户的角度来看这是一个请求是公平的)