PFQueryTableViewController два раздела с двумя источниками данных

Я хотел бы иметь PFQueryTableViewController с двумя разделами:

  • раздел 1: отображает PFObjects запрошенных (контакты из адресной книги, которые используют приложение)
  • раздел 2: отображает объекты массива (списки всех контактов из адресной книги)

На данный момент устанавливаю количество секций:

- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
{
    return 2;
}

Я устанавливаю количество строк в разделе:

- (NSInteger) tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
    if (section == 1)
    {
        return [self.contacts count];
    }
    else
    {
        return [self.objects count];
    }
    return 1;
}

Когда я пытаюсь отобразить содержимое ячеек, я получаю сбой при прокрутке:

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath object:(PFObject *)object {
    static NSString *CellIdentifier = @"Cell";
    PFTableViewCell *cell = (PFTableViewCell *)[tableView dequeueReusableCellWithIdentifier:CellIdentifier];
    if (cell == nil) {
        cell = [[PFTableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:nil];
    }

    if (indexPath.section == 0)
    {
    UILabel *name = [[UILabel alloc] initWithFrame:CGRectMake(0, 0, 200, 200)];
    name.text = object[@"username"];
    [cell addSubview:name];
    }
    else
    {
        UILabel *name = [[UILabel alloc] initWithFrame:CGRectMake(0, 0, 200, 200)];
        name.text = [self.contacts objectAtIndex:indexPath.row];
        [cell addSubview:name];
        NSLog(@"%@", [self.contacts objectAtIndex:20]);
    }
    cell.selectionStyle = UITableViewCellSelectionStyleNone;
    return cell;
}

Я получаю сообщение об ошибке: [__NSArrayM objectAtIndex:]: index 2 beyond bounds [0 .. 1] Причина должна заключаться в том, что PFObject запрашивается для каждой строки разделов 1 и 2, и, поскольку у меня больше объектов в разделах 2, он автоматически выходит за пределы и аварийно завершает работу при прокрутке.

Как лучше всего отобразить два раздела с двумя dataSource в PFQueryTableViewController? Нужно ли вставлять PFQueryTableViewController внутрь UITableViewController?


person Sancho Sanchez    schedule 17.06.2014    source источник
comment
Пожалуйста, отметьте мой ответ как правильный, если я вам помог. :)   -  person Jacob    schedule 04.01.2015


Ответы (1)


Не думаю, что PFQueryTableViewController сослужит вам здесь хорошую службу. Вероятно, было бы лучше использовать обычный UITableViewController и иметь два запроса, которые объединяются и отображаются в таблице. PFQTVC предназначался для использования с одним источником данных.

person Jacob    schedule 14.08.2014