Попытка загрузить только определенные объекты в табличное представление

У меня есть модель данных с сущностью Customer. Клиент имеет такие атрибуты, как имя, адрес и т. д. Одним из таких атрибутов является дата обратного звонка. Я хочу загрузить в таблицу только клиентов с датой обратного звонка сегодня. ниже приведен код, который я должен проверить, чтобы убедиться, что даты равны, а затем создать ячейку. Проблема в том, что даты не равны и пропускает создание ячейки. Как пропустить этого конкретного клиента и перейти к следующему?

if(date==date2 && month==month2 && year==year2)
    {
        static NSString *CellIdentifier = @"Cell";
        UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];

        if (cell == nil) {
            cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier];
        }


        NSString *string = [NSString stringWithFormat:@"%@ %@", cust.firstName, cust.lastName];
        cell.textLabel.text = string;
        return cell;
    }
return nil;


}

person Johnny Cox    schedule 28.12.2012    source источник
comment
При создании ячейки проверьте условие, т.е. если (cell== nil и ваше условие)   -  person Sugan S    schedule 28.12.2012
comment
Когда я это делаю, он возвращает пустую ячейку. Как заставить его не возвращать ячейку, чтобы в таблице не было пустой ячейки?   -  person Johnny Cox    schedule 28.12.2012
comment
if (condition) { NSString *string = [NSString stringWithFormat:@"%@ %@", cust.firstName, cust.lastName]; cell.textLabel.text = string; return cell;} попробуй, надеюсь, сработает   -  person Sugan S    schedule 28.12.2012


Ответы (1)


Я бы вообще пошел другим путем.

Вместо того, чтобы ничего не показывать в ячейке, просто не предоставляйте данные для того, чтобы была ячейка. Вы упомянули, что используете модели, поэтому я предполагаю, что вы используете основные данные?

Если это так, измените свой предикат при выборке моделей, чтобы игнорировать все объекты, которые не соответствуют вашим критериям. Затем вы можете просто показать каждый объект в своей таблице, поскольку знаете, что нет ничего, что вам не нужно.

В качестве альтернативы извлеките все (если, возможно, вы не используете основные данные), затем примените предикат к массиву данных, которые вы используете, и отфильтруйте его таким образом.

person PaReeOhNos    schedule 28.12.2012
comment
Как использовать предикат только для клиентов с сегодняшней датой? - person Johnny Cox; 28.12.2012
comment
Вы можете составить свои предикаты так, чтобы один предикат получал объекты, у которых дата больше, чем сегодняшняя дата в 0:01, и меньше, чем сегодняшняя дата в 23:59. Взгляните на этот ответ от yuji, который объясняет это более подробно :) - person PaReeOhNos; 28.12.2012