对不起,如果这是一个非常简单和愚蠢的问题。我对Parse来说还是新手。
假设我有一个Schedule对象,并且一个Schedule对象可以有一些ScheduleItem对象(不是很多)。我决定使用关系数组来建模,例如:
PFObject *first = ...
PFObject *second = ...
PFObject *third = ...
PFObject *schedule = [PFObject objectWithClassName:@Schedule"];
schedule[@"scheduleItems"] = @[first, second, third];
假设我想稍后查询属于此计划的这些ScheduleItem并在PFQueryTableViewController中使用它。我不能只查询此计划并通过数组访问其项目,因为PFQueryTableViewController使用PFQuery的结果作为表视图的数据源。而且我不确定如何查询"生活在数组中的ScheduleItem对象' scheduleItems'在特定的Schedule对象上#34;我看到了查询方法whereKey:containedIn:
,但它似乎并不匹配,因为在进行查询之前我没有引用此数组。看起来我需要做一些嵌套/复合查询,因为对于这个查询的一部分,我需要查询Schedule对象,但我不确定它是如何工作的。
编辑:澄清这个问题。假设Schedule对象有一个名字" Today"。我知道我可以为该Schedule对象构造一个查询,并告诉它包含" scheduleItems"字段:
PFQuery *query = [PFQuery queryWithClassName:@"Schedule"];
[query whereKey:@"name" equalTo:@"Today"]; // or query by its objectId
[query includeKey:@"scheduleItems"];
我知道如果我使用findObjectsInBackgroundWithBlock:
之类的内容执行此查询,则直接查询结果是一个对象的数组,即Schedule对象,其中所有ScheduleItem都可通过scheduleItems字段获得。
我的问题是,我不想自己执行此查询 - 我想将这些ScheduleItem用作PFQueryTableViewController中的单元格,它假定单元格与直接查询结果对象之间的一对一映射。如果我将上述查询与PFQueryTableViewController一起使用,则直接查询结果是一个对象的数组,这意味着该表只有一个对象。简而言之,我不知道如何告诉PFQueryTableViewController进行查询,然后使用其相关的对象数组来填充表。
答案 0 :(得分:0)
您选择使用数组而不是关系非常适合您的用例。因此,您可以指定
[query includeKey:@"scheduleItems"];
创建查询以指定它应该包含,内联并且不需要第二个网络请求,以及数组中对象的详细信息。
请记住,您应该将数组中的对象数量保持较小,以避免性能和可能的大小问题。