Можем ли мы изменить запрос в NSFetchedRequestController? - PullRequest
1 голос
/ 18 сентября 2011

Некоторые говорят, что мы не можем изменить объект запроса. Некоторые говорят, что мы можем изменить запрос. Некоторые говорят, что мы не можем изменить предикат.

Как изменить запрос, если вы не изменили предикат?

Это немного странно, верно.

1 Ответ

3 голосов
/ 18 сентября 2011

Это не SQL-запрос, это выборка.Запрос - это концепция, специфичная для SQL, а выборка - это концепция базовых данных, которая работает с любым типом хранилища базовых данных.

Вы можете изменить значение fetchRequest NSFetchedResultsController, но это несколько усложняет. Из документов:

Изменение запроса на выборку

Вы не можете просто изменить запрос на выборку, чтобы изменить результаты.Если вы хотите изменить запрос на выборку, вы должны:

(1) Если вы используете кеш, удалите его (используя deleteCacheWithName:).

Обычно вы не должны использовать кеш, есливы меняете запрос на выборку.

(2) Измените запрос на выборку.

(3) Вызвать executeFetch:.

Это кеш, который вызывает проблемы с изменением запроса на выборку.

Вы также можете изменить предикат объекта NSFetchRequest, но если вы используете это извлечение с контроллером извлеченных результатов, вы должны выполнить вышеуказанные шаги.

Проблемы возникают, когда кэшированные объекты не совпадают с набором, возвращаемым новым запросом выборки.Часто проще и чище просто создать новый объект запроса выборки или новый объект контроллера полученных результатов.

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...