[Хабрахабр] Core Data для iOS. Глава №1. Теоретическая часть.pdf
(
3806 KB
)
Pobierz
26
августа
2013
в
02:23
Core Data
для
iOS.
Глава №1. Теоретическая часть
Objective C*, Mobile Development*,
Разработка под
iOS*
Хабралюди, добрый де�½ь!
Сегод�½я хочу �½ачать �½аписа�½ие ряда лекций с практическими зада�½иями по к�½иги Михаеля Привата и Роберта Вар�½ера
«Pro Core Data for
iOS»,
которую можете купить по
этой
ссылке. Каждая глава будет содержать теоретическую и практическую часть.
Содержа�½ие:
Глава №1. Приступаем
(Практическая
часть)
Глава №2. Усваиваем
Core Data
Глава №3. Хра�½е�½ие да�½�½ых:
SQLite
и другие вариа�½ты
Глава №4. Созда�½ие модели да�½�½ых
Глава №5. Работаем с объектами да�½�½ых
Глава №6. Обработка результатирующих м�½ожеств
Глава №7. Настройка производитель�½ости и используемой памяти
Глава №8. Управле�½ие версиями и миграции
Глава №9. Управле�½ие таблицами с использова�½ием
NSFetchedResultsController
Глава №10. Использова�½ие
Core Data
в продви�½утых приложе�½иях
Приступаем
Что такое
Core Data?
Используя компьютеры для выпол�½е�½ия своих задач, люди рассчитывают, что в�½есе�½�½ые ими изме�½е�½ия будет сохра�½е�½ы. Сохра�½е�½ие
изме�½е�½ий играет важ�½ую роль в офис�½ых программ�½ых пакетах, текстовых редакторах, играх, браузерах и тд. Больши�½ство программ�½ого
обеспече�½ия �½уждается в возмож�½ости хра�½ить введе�½�½ые пользователем да�½�½ые для последующего восста�½овле�½ия состоя�½ия работы, �½о
ко�½еч�½о же есть и такое ПО, которое в этом �½е �½уждается
—
калькуляторы, �½овост�½ые ле�½ты, будиль�½ики, виджеты о погоде.
По�½има�½ие того, каким образом мож�½о хра�½ить да�½�½ые �½а
iDevice,
является критически важ�½ым при разработке продви�½утых приложе�½ий.
Apple
предоставляет гибкий фрэймворк для работы с хра�½имыми �½а устройстве да�½�½ыми
— Core Data.
Ко�½еч�½о же
Core Data
�½е па�½ацея и
есть другие вариа�½ты хра�½е�½ия да�½�½ых, которые могут лучше подойти при реше�½ии определе�½�½ых задач, �½о уж оче�½ь хорошо и красиво
Core Data
вписывается в
Cocoa Touch.
Больши�½ство деталей по работе с хра�½илищем да�½�½ых
Core Data
скрывает, позволяя вам
ско�½це�½трироваться �½а том, что действитель�½о делает ваше приложе�½ие веселым, у�½икаль�½ым и удоб�½ым в использова�½ии.
Не смотря �½а то, что
Core Data
может хра�½ить да�½�½ые в реляцио�½�½ой базе да�½�½ых вроде
SQLite, Core Data
�½е является СУБД. По-правде
Core
Data
в качестве хра�½илища может вообще �½е использовать реляцио�½�½ые базы да�½�½ых.
Core Data
�½е является чем-то вроде
Hibernate,
хотя и
предоставляет �½екоторые возмож�½ости
ORM. Core Data
скорее является оболочкой/фрэймворком для работы с да�½�½ыми, которая позволяет
работать с сущ�½остями и их связями
(от�½оше�½иями
к другим объектами), атрибутами, в том виде, который �½апоми�½ает работы с объект�½ым
графом в обыч�½ом объект�½о-орие�½тирова�½�½ом программирова�½ии.
З�½аете ли Вы?
Core Data
был в�½едрё�½ лишь �½ачи�½ая с
Mac OS X 10.4 Tiger
и
iPhone SDK 3.0
История хра�½е�½ия да�½�½ых в
iOS
Как за выпуще�½�½ые
Pixar
мультфильмы мы долж�½ы благодарить компа�½ию
NeXT,
так и за
Core Data
мы долж�½ы сказать ей спасибо.
Core Data
родилась и эволюцио�½ировала из тех�½ологии, �½азываемой
Enterprise Objects Framework (EOF).
Дебют фрэймворка приходится �½а
2005
год с запуском
Mac OS X 10.4 (Tiger),
а вот в
IPhone
появляется лишь �½ачи�½ая с версии
3.0.
До того, как
Core Data
пришла �½а
IPhone,
разработчикам приходилось �½е сладко и для хра�½е�½ия да�½�½ых могли быть использова�½ы
следующие вариа�½ты:
1)
Списки свойств, которые содержали пары ключ-з�½аче�½ие из различ�½ых типов да�½�½ых.
2)
Сериализация да�½�½ых и хра�½е�½ие их в файлах
(использовался
протокол
NSCoding)
3)
Реляцио�½�½ая база да�½�½ых
SQLite
4)
Хра�½е�½ие да�½�½ых в облаке
Эти методы всё еще продолжают использоваться, хотя и �½и оди�½ метод из четырёх �½е срав�½ится по удобству с использова�½ием
Core Data.
Несмотря �½а рожде�½ие таких фрэймворком, как
FMDatabase
и
ActiveRecord,
для реше�½ия проблемы с хра�½е�½ием да�½�½ых до появле�½ия
Core
Data,
разработчики с удовольствием переключились �½а
Core Data
после его появле�½ия.
Хотя повторюсь, что
Core Data
�½е является лекарством от всех болез�½ей, и�½огда вы ко�½еч�½о будете обращаться к реше�½иям с
использова�½ием, �½апример, списка свойств, �½о чаще всего вы будете сталкиваться с �½еобходимостью и жела�½ием использовать в своих
приложе�½иях име�½�½о
Core Data,
как и�½струме�½т, который �½аилучшим образом позволяет решить вашу проблему.
Чем чаще и чем больше вы будете программировать и использовать
Core Data,
тем чаще у вас будет воз�½икать �½е вопрос
«Стоит
ли м�½е
использовать
Core Data?»,
а
«Есть
ли причи�½а �½е использовать
Core Data?».
Созда�½ие простого приложе�½ия с
Core Data
В этой секции мы создадим простое приложе�½ие ос�½ова�½�½ое �½а
Core Data
из од�½ого из шабло�½ов
XCode,
ос�½ов�½ые части которого разберём.
В ко�½це этой части вы поймете, каким образом приложе�½ие взаимодействует с
Core Data
для хра�½е�½ия и получе�½ия да�½�½ых.
По�½има�½ие ос�½ов�½ых компо�½е�½тов
Core Data
Перед тем, как погрузиться в код и разбор тестового приложе�½ия, �½еобходимо иметь представле�½ие о компо�½е�½тах
Core Data.
На рису�½ке
�½иже продемо�½стрирова�½ы ос�½ов�½ые элеме�½ты, которые мы будем использовать в тестовом приложе�½ии.
Как пользователь
Core Data
вы �½икогда �½е долж�½ы работать �½апрямую с хра�½илищем да�½�½ых. Абстрагируйтесь от хра�½илища, от типа
хра�½илища, думайте только о да�½�½ых! Особе�½�½остью такого подхода является возмож�½ость безболез�½е�½�½о сме�½ить тип хра�½илища
(был XML
файл, а стал
SQLite)
�½е ме�½яя большое кол-ва �½аписа�½�½ого вами кода.
Объекты, которые �½аходятся под управле�½ием фрэймворка
(Core Data)
долж�½ы �½аследовать методы/свойства класса
NSManagedObject.
Так же, как и людям, объектам �½уж�½а среда в которой о�½и могут существовать, такая среда есть и, �½азывается о�½а
managed object context
(среда
управляемых объектов) или просто
context.
Среда, в которой �½аходится объект, следит �½е только за тем, в каком состоя�½ии
�½аходится объект с которым вы работаете, �½о и за состоя�½иями связа�½�½ых объектов
(объектов,
которые зависимы от да�½�½ого и от которых
зависим о�½ сам).
Экземпляр класса
NSManagedObjectContext
предоставляет ту самую среду для объектов, объект да�½�½ого типа долже�½ быть доступе�½ в вашем
приложе�½ии всегда. Обыч�½о экземпляр класса
NSManagedObjectContext
является свойством делегата вашего приложе�½ия. Без среды, без
экземпляра класса
NSManagedObjectContext
вам просто �½е удастся работать с
Core Data.
Созда�½ие �½ового проекта
Запустим
XCode
и создадим �½овый проект из шабло�½а
Master-Detail Application:
Запол�½им поля следующим образом:
И после заверше�½ия созда�½ия увидим пример�½о такую карти�½у:
Создать �½овую сущ�½ость мож�½о клик�½ув �½а к�½опку
"+"
в левой �½иж�½ей части
XCode,
а добавить �½овый атрибут сущ�½ости мож�½о �½ажав �½а
к�½опку
"+"
уже в разделе
«Attributes»
и затем выбрать его тип.
И�½ициализация ко�½текста
(среды)
Послед�½ий шаг состоит в и�½ициализации ко�½текста, хра�½илища и объект�½ой модели. Чаще всего вы можете воспользоваться кодом, который
автоматически ге�½ерируется
XCode
в
«пустых»
проектах использующих
Core Data.
DemoAppAppDelegate.h
#import
<UIKit/UIKit.h>
#import
<CoreData/CoreData.h>
@interface DemoAppDelegate : UIResponder <UIApplicationDelegate> {
}
@property (strong,
nonatomic)
UIWindow *window;
@property (strong,
nonatomic)
UINavigationController *navigationController;
@property (readonly,
strong, nonatomic)
NSManagedObjectModel *managedObjectModel;
@property (readonly,
strong, nonatomic)
NSManagedObjectContext *managedObjectContext;
@property (readonly,
strong, nonatomic)
NSPersistentStoreCoordinator *persistentStoreCoordinator;
- (void)saveContext;
- (NSURL *)applicationsDocumentsDirectory;
@end
Переключимся в
*.m
файл
DemoAppAppDelegate
и �½апишем следующие строки:
@synthesize managedObjectContext = _managedObjectContext;
@synthesize managedObjectModel = _managedObjectModel;
@synthesize persistentStoreCoordinator = _persistentStoreCoordinator;
Далее следует код, который производит и�½ициализацию модели да�½�½ых, хра�½илища и ко�½текста.
- (NSManagedObjectModel *)managedObjectModel {
if
(_managedObjectModel !=
nil){
return
_managedObjectModel;
}
NSURL *modelURL = [[NSBundle mainBundle] URLForResource:@"MyModel" withExtension:@"momd"];
_managedObjectModel = [[NSManagedObjectModel alloc] initWithContentsOfURL:modeURL];
return
_managedObjectModel;
}
- (NSPersistentStoreCoordinator *)persistentStoreCoordinator {
if(_persistentStoreCoordinator
!=
nil){
return
_persistentStoreCoordinator;
}
NSURL *storeURL = [[self applicationDocumentsDirectory] URLByAppendingPathComponent:@"DemoApp.sqlite"];
NSError *error =
nil;
_persistentStoreCoordinator = [[NSPersistentStoreCoordinator alloc] initWithManagedObjectModel: [self managedObjectModel]];
if(![_persistentStoreCoordinator
addPersistentStoreWithType:NSSQLiteStoreType configuration:nil URL:storeURL options:nil
error&error]){
NSLog(@"Unresolved
error %@, %@",
error, [error userInfo]);
abort();
}
return
_persistentStoreCoordinator;
}
- (NSManagedObjectContext *)managedObjectContext {
if(_managedObjectContext
!=
nil){
return
_managedObjectContext;
}
NSPersistentStoreCoordinator *coordinator = [self persistentStoreCoordinator];
if(coordinator
!=
nil){
_managedObjectContext = [[NSManagedObjectContext alloc] init];
[_managedObjectContext setPersistentStoreCoordinator:coordinator];
}
return
_managedObjectContext;
}
Plik z chomika:
Ryjufka
Inne pliki z tego folderu:
[SAMS] Cocoa Programming (Scott Anguish) (2002).pdf
(9155 KB)
Advanced Graphics Programming Using OpenGL (Tom McReynolds, David Blythe).pdf
(13052 KB)
Absolute FreeBSD (Michael W. Lucas).pdf
(7836 KB)
Beginning iOS Game Development (Patrick Alessi).pdf
(20539 KB)
Begining iPad Development for iPhone Developers (Jack Nutting).pdf
(6606 KB)
Inne foldery tego chomika:
[Eng] Android books
BPM Business Process Modeling
IT Ebooks Mega Pack
IT Ebooks Programming
IT epub
Zgłoś jeśli
naruszono regulamin