Проверка данных


Проверка данных

Вы сказали, что Core Data может выполнять проверку данных. Какое место она занимает в описанной схеме?

Как минимум Core Data проверяет объекты перед их сохранением в хранилище. Таким образом, ошибка проверки данных может быть выдана при попытке сохранения изменений, если управляемые объекты содержат недействительную информацию. В этот момент что-либо делать уже поздно, поэтому проверка объектов NSManagedObject должна производиться как можно ближе к моменту изменения. Явная проверка нового объекта NSManagedObject может выполняться так: [fugitive validateForlnsert:&error]. Аналогичные методы существуют для проверки операций обновления и вставки. Эти методы позволяют проверить соответствие NSManagedObject ограничениям, установленным в модели данных. Если проверка не прошла, можно проинформировать пользователя.


Можно ли сбросить его состояние?

Достаточно отправить ему сообщение rollback:. При получении сообщения контекст управляемых объектов отменяет все добавления объектов, удаления и не- сохраненные изменения в существующих объектах. Можно считать, что контекст обеспечивает управление транзакциями: изменения в сущностях, включая операции вставки и удаления, либо закрепляются сообщением save:, либо отменяются сообщением rollback:.


Показываем приложение Васе.

При виде детализированного представления и новых элементов для отслеживания поимки Вася приходит в восторг.

Да, я умею заполнять ячейки таблицы, но как отобрать только пойманных преступников?

Мы можем использовать Core Data для фильтрации результатов.

Информация о поимке преступников уже хранится в данных Fugitive; нужно лишь воспользоваться ей для составления списка пойманных преступников. Мы должны каким-то образом сообщить Core Data, что нам нужны только данные преступников с установленным флагом captured.


Использование предикатов для фильтрации данных

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


Но возможности объектов NSPredicate не ограничиваются простыми сравнениями атрибутов. Apple предоставляет такие субклассы, как NSComparisonPredicate, NSCompoundPredicate и NSExpression, а также поддерживает синтаксис поиска по шаблону, перебор графа объектов и другие возможности. Сложные запросы на выборку даже могут строиться в графическом виде в Xcode. В приложении iBountyHunter для задачи Васе достаточно простой проверки атрибута, поэтому мы создадим предикат на программном уровне.


  • Дата: 4-01-2015, 20:39

Предыдущие статьи сайта:

Понравилась статья? Ставь лайки, рассказывай друзьям!



Отзывы о статье: Проверка данных

Технологии, секреты и фишки Apple: Iphone, iPad, iPod