Контекст управляемых объектов


Контекст управляемых объектов

Чтобы сообщить контексту управляемых объектов, какая информация нам нужна, необходимо создать объект NSFetchRequest. Он описывает объекты, которые мы хотим получить, условия выборки (например, вознаграждение > $1000) и порядок сортировки полученных результатов. Да, NSFetchRequest все это делает.

Запрос на выборку с использованием NSFetchRequest.

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

Создание изменяемого массива для хранения данных, полученных в результате выборки.

Создайте в FugitiveListViewController массив items для хранения результатов выборки. Не забудьте про директиву @synthesize для свойства и освободите память.

Импортирование необходимых заголовочных файлов в FugitiveListViewGontroller.m.

Проследите за тем, чтобы заголовки классов делегата приложения и Fugitive были импортированы в FugitiveListViewController.m директивой #import.

Реализация выборки в viewW/iIIAppear.

Соберите воедино все, о чем было рассказано на последней паре страниц, и реализуйте выборку. Получите контекст управляемых объектов от делегата, создайте объект запроса и выполните его. Не забудьте занести результат в только что созданный массив.

Потрясающе. Теперь давайте загрузим эти данные.

Откройте страницу http: //www. headfirstlabs. сот/books/ iphonecLev и загрузите файл iBountyHunter.sqlite. В XCode щелкните правой кнопкой на проекте iBountyHunter, выберите команду Add Files to iBountyHunter и проследите за тем, чтобы файл был скопирован в каталог /Supporting Files.

Подумайте, что это означает для вашего приложения. Потребует ли добавление новой базы данных серьезного рефакторинга, или Core Data поможет нам и в этом?

База данных Пети — ресурс

У нас уже имеется весь код загрузки данных — он был сгенерирован шаблоном Core Data. Но как перейти от него к непосредственной загрузке базы данных?

Возвращаемся к стеку Core Data.

Помните стек компонентов Core Data, о котором мы говорили ранее? С контекстом управляемых объектов все сделано; теперь нас интересует, откуда непосредственно поступают данные. Как и в случае с контекстом управляемых объектов, шаблон уже подготовил остальные компоненты стека к использованию.

Посмотрим, что подготовил для нас шаблон в делегате приложения.

Шаблон Выполняет настройку SQLite.

Шаблон Core Data создает Persistent Store Coordinator, чтобы использовать базу данных SQLite вашего проекта. Поскольку база данных называется iBountyHunter.sqlite, Core Data работает.

Итак, база данных находится на своем месте, а постоянное хранилище объектов может использоваться без изменений. Запустите приложение.

Core Data ищет в другом месте.

Проблема связана с тем, как Core Data ищет нашу базу данных. Хотя вообще-то все еще сложнее.
  • Дата: 1-01-2015, 13:20

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

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



Отзывы о статье: Контекст управляемых объектов

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