Заполните ячейки табличного представления данными из NSArray / PFQuery

ios objective-c uitableview parse-platform

408 просмотра

1 ответ

Я использую 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"];

Я уже много чего перепробовал, уверен, это что-то маленькое. Пожалуйста помоги.

Автор: ferrojr Источник Размещён: 12.07.2019 06:17

Ответы (1)


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них передается методу. В настоящее время вы полностью игнорируете этот аргумент.

Автор: Aaron Brager Размещён: 15.12.2013 12:05
Вопросы из категории :
32x32