用parse和ios sdk检索相关数据

我只是试图检索相关的数据到我的应用程序与parsing,但我得到一些问题。 我有两个表,旅游和城市,旅游有一个相关的领域,称为起源城市。 我在数据浏览器中使用了一个指针来关联它们。

所以在我使用的queryForTable方法

- (PFQuery *)queryForTable { PFQuery *query = [PFQuery queryWithClassName:self.parseClassName]; [query includeKey:@"origin-city"]; return query; 

}

我总是得到指针ID,但不是城市的名字,这是我真正需要的。 这是做这个的正确方法? 我怎么能找回这个城市的名字?

编辑

当我打印源城市时,我得到城市:M0PwR0OiLj:(null)其中M0PwR0OiLj是城市的objectId,在这里我需要的名称

非常感谢

我假设你正在使用一个PFQueryTableViewController ,因为queryForTable属于那个方法。 声明查询已在进行中的错误是因为查询是由PFQTVC在后台触发的,所以请求执行findObjectsInBackgroundWithBlock的答案在您的情况下是不可能的。

有了这个特殊的表视图控制器, cellForRowAtIndexPath也传递了一个PFObject ,它是匹配行的对象。

要获取来自相关对象的城市名称,可以在cellForRowAtIndexPath使用以下代码:

 PFObject *city = object[@"origin-city"]; [cell.textLabel setText:city[@"name"]; // The name column from the City class 

我相信当你使用 – (PFQuery *)queryForTable它将返回结果它拉到索引path行的单元格,所以你可以尝试这样的事情

 - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath object:(PFObject *)object { static NSString *CellIdentifier = @"Cell"; UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier]; if (cell == nil) { cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:CellIdentifier]; } [cell.textLabel setText:[object objectForKey:@"origin-city"]]; return cell; 

}

检查是否:

  1. self.parseClassName包含classNamestring“Travel”

  2. 从您的Parse网页仪表板中,确保“Travel”类中的“origin-city”列确实是types为“City”的指针

  3. 指针指向仍然存在的City行

请记住,每个空白字段(从Web仪表板中可以看到具有“未定义”占位符的字段/列)都不会返回到结果查询中。 所以这意味着如果你在“City”className中有一个空的(所以未定义的)“name”列,你将无法读取它。 无论如何,select应该是这样的:

 [query findObjectsInBackgroundWithBlock:^(NSArray * travels, NSError *error) { if (error) return; for (PFObject *travelX in travels) { PFObject *city = travelX[@"origin-city"]; // or [travelX objectForKey:@"origin-city"] if you prefer if (city){ NSString* objectId = city.objectId; NSDate* createdAt = city.createdAt; NSString* cityName = city[@"name"]; NSLog("The city name is %@", ( cityName ? cityName : @"<NOT DEFINED>" ) ); }else NSLog(@"%@",@"There is no city for this travel"); } }]; 

希望能帮助到你