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