Сортировать NSFetchRequest по предикату

У меня есть базовое хранилище данных, поддерживаемое SQLite, и я хочу получить список управляемых объектов, используя NSFetchRequest, Я хочу, чтобы указанный список сортировался по логическому значению, которое можно легко рассчитать на уровне базы данных. Я знаю это, потому что можно сформулировать те же условия, используя NSPredicate, который будет выглядеть следующим образом:

[NSPredicate predicateWithFormat:@"uid = %@", currentUID]

К сожалению, кажется, что нет способа сформулировать подобное условие, используя NSSortDescriptor, Как мне лучше идти об этом? Получить два списка, один с

[NSPredicate predicateWithFormat:@"uid = %@", currentUID]

и один с

[NSPredicate predicateWithFormat:@"uid != %@", currentUID]

и объединить их позже? Могу ли я тогда еще элегантно использовать NSFetchedResultsController?
Или я должен получить все элементы и отсортировать их позже в коде? Или я что-то пропустил?

2 ответа

Просто создайте массив (даже если он содержит только один элемент) NSSortDescriptors отсортировать результат по желанию.

Ты используешь setSortDescriptors: установить их.

Выборка может обрабатывать как предикаты, так и сортировку одновременно.

То, что вы просите, не имеет смысла.

Предикат используется для выбора объектов, которые должны быть возвращены в наборе результатов. Это определяется путем оценки предиката для каждого объекта, чтобы увидеть, оценивает ли предикат значение YES или же NO (двоичное значение или одно из 2 возможных значений). Если это оценивает YES, то объект включен. Если это оценивает NO, то объект исключается. Там нет никакого среднего.

В отличие от дескриптора сортировки оценивается less than, equal, или же greater than, Другими словами, это троичное значение (это может быть одна из трех вещей). Невозможно выразить троичное значение с помощью предиката (поскольку предикат является двоичным), и поэтому использование предиката в качестве дескриптора сортировки не имеет абсолютно никакого смысла. API не позволяет этого, потому что логика не позволяет этого.

Итак, настоящий вопрос: что вы пытаетесь сделать? Как вы думаете, зачем вам нужен предикат в дескрипторах сортировки?

Другие вопросы по тегам