使用来自NSArray / PFQuery的数据填充tableview单元格

时间:2013-12-15 00:00:04

标签: ios objective-c uitableview parse-platform

我使用parse.com作为数据库,我在单元格中需要的数据似乎正确地传输到nsarray,虽然我无法在我的表中显示它。

这是查询数据库的方法。

- (PFQuery *)queryForTable {
    PFQuery *exerciciosQuery = [PFQuery queryWithClassName:@"ExerciciosPeso"];
    [exerciciosQuery whereKey:@"usuario" equalTo:[PFUser currentUser]];
    [exerciciosQuery includeKey:@"exercicio"];

    // execute the query
    _exerciciosArray = [exerciciosQuery findObjects];
        for(PFObject *o in _exerciciosArray) {
            PFObject *object = o[@"exercicio"];
            NSLog(@"PFOBJECT %@", object);
                NSLog(@"%@", o);
        }

    NSLog(@"%@", _exerciciosArray);

    return exerciciosQuery;
}

Grupo = Biceps;

descricao = "descricao alternada";

titulo = "Rosca alternada";

Peso = 10;

exercicio = "<Exercicios:Iv2XB4EHSY>";

usuario = "<PFUser:W9ifgHpbov>";

Grupo = Biceps;

descricao = descricao;

titulo = "Puxada Reta";

Peso = 20;

exercicio = "<Exercicios:nmqArIngvR>";

usuario = "<PFUser:W9ifgHpbov>";

Grupo = Biceps;

descricao = "Fazer rosca";

titulo = "Rosca no Pulley";

Peso = 30;

exercicio = "<Exercicios:CXecX4DJiO>";

usuario = "<PFUser:W9ifgHpbov>";

Grupo = Biceps;

descricao = "em pe descricao";

titulo = "Biceps na corda";


Peso = 40;

exercicio = "<Exercicios:6slVOQnj3y>";

usuario = "<PFUser:W9ifgHpbov>";

好的,作为大纲中的淋浴,我的查询成功填充了一个数组,其中包含来自数据库中不同表的四个对象,这些对象是链接的。但我想这并不重要。

我需要做的是填充我的单元格,四行,因为我有四个具有特定键的项目。我想在每行显示,分配给“titulo”和“Peso”的值,似乎都在查询中正确返回。

当我使用下面的代码时,尝试填充for循环中的单元格,它只添加同一项的四行。

- (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];
    }

    for(PFObject *o in _exerciciosArray) {
        PFObject *object = o[@"exercicio"];
        cell.textLabel.text = [object objectForKey:@"titulo"];
    }

    return cell;
}

当我删除for循环并添加以下行时,我的表格中没有任何内容。

object = [_exerciciosArray objectAtIndex:indexPath.row];
cell.textLabel.text = [object objectForKey:@"titulo"];

我已经尝试了很多东西,我确信它很小。请帮忙。

1 个答案:

答案 0 :(得分:1)

您正在设置单元格N次,其中N为_exerciciosArray.count。实际上只显示数组中的最后一项,因为它已分配给所有四个单元格。

改变这个:

for(PFObject *o in _exerciciosArray) {
    PFObject *object = o[@"exercicio"];
    cell.textLabel.text = [object objectForKey:@"titulo"];
}

到此:

PFObject *o = _exerciciosArray[indexPath.row];
PFObject *object = o[@"exercicio"];
cell.textLabel.text = object[@"titulo"];

您需要根据传递给方法的indexPath来提取不同的对象。目前你完全无视这个论点。