3

对不起,如果这是一个非常简单和愚蠢的问题。我对 Parse 还是很陌生。

假设我有一个 Schedule 对象,一个 Schedule 对象可以有几个 ScheduleItem 对象(不是很多)。我决定使用关系数组对此进行建模,例如:

PFObject *first = ...
PFObject *second = ...
PFObject *third = ...

PFObject *schedule = [PFObject objectWithClassName:@Schedule"];
schedule[@"scheduleItems"] = @[first, second, third];

假设我想稍后查询属于此计划的这些 ScheduleItems 并在 PFQueryTableViewController 中使用它。我不能只查询这个计划并通过数组访问它的项目,因为 PFQueryTableViewController 使用 PFQuery 的结果作为表视图的数据源。而且我不确定如何查询“位于特定 Schedule 对象的数组'scheduleItems' 中的 ScheduleItem 对象”。我看到了查询方法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 对象,所有 ScheduleItems 都可以通过 scheduleItems 字段获得。

我的问题是,我不想自己执行此查​​询 - 我想将这些 ScheduleItems 用作 PFQueryTableViewController 中的单元格,它假定单元格和直接查询结果对象之间存在一对一的映射。如果我将上述查询与 PFQueryTableViewController 一起使用,则直接查询结果是一个对象的数组,这意味着该表只有一个对象。简而言之,我不知道如何告诉 PFQueryTableViewController 进行查询,然后使用其相关的对象数组来填充表。

4

1 回答 1

0

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

[query includeKey:@"scheduleItems"];

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

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

于 2015-06-30T07:02:23.987 回答