2015-02-02 5 views
0

Учитывая NSManagedObjectContext и NSFetchRequest, я хотел бы знать, будет ли возвращен не пустой набор результатов, если я выдам запрос на выборку.Предоставляет ли Core Data экзистенциальный запрос для NSFetchRequest?

Способ countForFetchRequest:error: есть, который можно использовать. Это, безусловно, кажется лучше, чем фактически выполнение запроса и возврат объектов (или ошибок) обратно. Однако во многих случаях достаточно знать, что есть : точное число не имеет значения.

+1

Я думаю 'countForFetchRequest: ошибка:' лучший выбор. Если это утешение, кажется (по крайней мере, для некоторых достаточно сложных изъятий, которые я только что протестировал), чтобы использовать SQL для подсчета, а не для выполнения выборки и подсчета результатов. – pbasdf

ответ

1

Даже если вам все равно, что такое точное число, вопрос, который вы задаете, по-прежнему «является числом больше нуля»? Для этого нет конкретного встроенного метода, поэтому запрос счетчика и сравнение результата с нулем - это правильный способ сделать это. Это также дешевле с точки зрения памяти и времени, так как вы не тратите время на получение объектов, которые вам не нужны в памяти.

Вы могли сделать что-то вроде выполнения выборки с fetchLimit 1, но это более неясными (вы выборку вещи вам не нужны).

+0

Я заметил в документации для 'countForFetchRequest: error:', что он смутно намекает, что если вы установите 'fetchLimit', вы можете получить только 1 результат, если есть больше? Мне, наверное, нужно попробовать. – Benjohn

+0

Не знаю. Я, возможно, ошибся, мое намерение было рекомендовать против использования fetchLimit в этом случае. –

+0

** кивает ** Я согласен с тобой, что на самом деле выбор только одного _probably_ - это не отличная идея, если только это не помогает, и тестирование показывает его быстрее. Если интерфейс count работает с лимитом одного, хотя (и на самом деле быстрее), это будет довольно круто. – Benjohn

Смежные вопросы