PFQueryTableViewController使用PFObject数组中的对象

时间:2015-06-30 03:19:08

标签: parse-platform pfquery pfquerytableviewcontrolle

对不起,如果这是一个非常简单和愚蠢的问题。我对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进行查询,然后使用其相关的对象数组来填充表。

1 个答案:

答案 0 :(得分:0)

您选择使用数组而不是关系非常适合您的用例。因此,您可以指定

[query includeKey:@"scheduleItems"];

创建查询以指定它应该包含,内联并且不需要第二个网络请求,以及数组中对象的详细信息。

请记住,您应该将数组中的对象数量保持较小,以避免性能和可能的大小问题。