我只是想用Parse将相关数据检索到我的应用程序中,但是我遇到了一些问题。 我有2个表,旅行和城市,旅游有一个相关的领域叫做origin-city。我在数据浏览器中使用指针来关联它们。
所以在 queryForTable 方法中,我正在使用
- (PFQuery *)queryForTable {
PFQuery *query = [PFQuery queryWithClassName:self.parseClassName];
[query includeKey:@"origin-city"];
return query;
}
而且我总是得到指针Id而不是城市名称,这是我真正需要的。 这是这样做的正确方法吗?我怎么能找到这个城市的名字?
修改
当我打印原始城市时,我正在城市:M0PwR0OiLj :( null)其中M0PwR0OiLj是City的objectId,这里我需要名称
非常感谢
答案 0 :(得分:2)
我假设您使用的是PFQueryTableViewController
,因为方法queryForTable
属于该方法。说明查询已在进行中的错误是因为PFQTVC在幕后触发了查询,因此在您的情况下无法回答要求findObjectsInBackgroundWithBlock
的问题。
使用这个特殊的表视图控制器,cellForRowAtIndexPath
也会传递PFObject
,这是匹配行的对象。
要获取来自相关对象的城市名称,请在cellForRowAtIndexPath
中使用此代码:
PFObject *city = object[@"origin-city"];
[cell.textLabel setText:city[@"name"]; // The name column from the City class
答案 1 :(得分:1)
我相信当你使用 - (PFQuery *)queryForTable时,它会返回它所带来的结果 索引路径中的行的单元格,因此您可以尝试这样的
- (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;
}
答案 2 :(得分:0)
检查是否:
self.parseClassName
包含className字符串“Travel”
,确保“Travel”类中的“origin-city”列实际上是“City”类型的指针
指针指的是仍然存在的City行
请记住,每个空字段(从Web仪表板中可以看到带有“未定义”占位符的字段/列)都不会在结果查询中返回。所以这意味着如果你在“City”className中有一个空的(如此,未定义的)列“name”,你将无法读取它。无论如何,选择应该是这样的:
[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");
}
}];
希望有所帮助