Upload
pavel-bashmakov
View
6.641
Download
4
Embed Size (px)
DESCRIPTION
Citation preview
Использование CoreData в iPhone приложениях
Что такое Core Data
• Framework, появился в iPhone 3.0 SDK• “Полноценный” ORM• Поддерживает три вида хранилищ
данных(InMemory, SQLite, Binary)• Имеет графический интерфейс для
редактирования модели данных в XCode
Еще немного о возможностях Core Data
• Эффективная работа с графами объектов• Операции Undo/Redo на графе объектов• Поддержка миграции между версиями
моделей данных• Работа с несколькими хранилищами
одновременно
Основные части Core Data
PersistentStoreCoordinator
Основные части Core Data
PersistentStoreCoordinator Отвечает за координацию Хранилищ данных (Persistence Stores)
Основные части Core Data
PersistentStoreCoordinator
Binary
PersistentStoresSQLite
Основные части Core Data
PersistentStoreCoordinator
Binary
PersistentStores
SQLite
Отвечают за хранение данных в определенном виде (SQLite, Binary, …)
Основные части Core Data
PersistentStoreCoordinator
Binary
PersistentStores
SQLite
ManagedObjectModel
Основные части Core Data
PersistentStoreCoordinator
Binary
PersistentStores
SQLite
ManagedObjectModel
Хранит информацио о модели данных. О сущностях, связях, зависимостях
Основные части Core Data
PersistentStoreCoordinator
Binary
PersistentStores
SQLite
ManagedObjectModel
ManagedObjectContext
Основные части Core Data
PersistentStoreCoordinator
Binary
PersistentStores
SQLite
ManagedObjectModel
ManagedObjectContextСодержит активные объекты
Основные части Core Data
PersistentStoreCoordinator
Binary
PersistentStores
SQLite
ManagedObjectModel
ManagedObjectContext
ManagedObjects
Как можно использовать?
• Хранение данных- Локальный кеш- Полноценное хранилище
• Модель данных- Модели, состоящие из набора сущностей со
сложными взаимосвязями- Редактируемая модель с возможностью
сохранения состояний
Использование Core Data
Хранение данных
Пример модели данных из реального приложения
Использование Core Data
модель данных для графического редактора
модель данных для графического редактора
player
MO
DEL
VIEW
модель данных для графического редактора
player
MO
DEL
VIEW
SAVE
модель данных для графического редактора
player
hat
player
shoesMO
DEL
VIEW
EDIT
модель данных для графического редактора
player
hat
player
shoesMO
DEL
VIEW
SAVE
модель данных для графического редактора
player
hat
player
shoesMO
DEL
VIEW
redo
undo
модель данных для графического редактора
player
hat
player
shoes
hair
playershoesM
OD
ELVI
EW
redo
undo
EDIT
модель данных для графического редактора
player
hat
player
shoes
hair
playershoesM
OD
ELVI
EW
redo
undo
SAVE
модель данных для графического редактора
player
hat
player
shoes
hair
playershoesM
OD
ELVI
EW
redo redo
undoundo
Кроме Core Data что-то надо?
Откуда приходят данные в приложение
• С сервера– Результаты поиска– Состояние системы– Кеш
• От пользователя– Прямой ввод данных
Откуда приходят данные в приложение
• С сервера– Результаты поиска– Состояние системы– Кеш
• От пользователя– Прямой ввод данных
JSON
XML
Core
Dat
a
Input
Откуда приходят данные в приложение
• С сервера– Результаты поиска– Состояние системы– Кеш
• От пользователя– Прямой ввод данных
JSON
XML
Core
Dat
a
Input
Лучше не так
JSON
XML
Core
Dat
a
Input
Структурное решение
JSON
XML
(кон
крет
ная
реал
изац
ия)
Core
Dat
a/SQ
Lite
/FM
DB
Инт
ерф
ейс
Input
Структура приложения
• XML / JSON парсер• Протокол(Интерфейс) доступа к
данным• Конкретная реализация доступа к
данным (CoreData, SQLite PO, FMDB)
Удобно. Просто.
Удобно. Просто.
А что с производительностью?
Core Data vs SQLite PO
Core Data vs SQLite PO
• Количество Объектов – 1000• Количество Запросов – 1000• 17 полей• Индекс по полю ‘phone’
Core Data vs SQLite POCore Data SQLite PO
Cоздание БД 0.11 с 0.02 с
Core Data SQLite POCоздание БД 0.11 с 0.02 сЗаполнение 8.3 с 113.5 c
Core Data vs SQLite PO
Core Data SQLite POCоздание БД 0.11 с 0.02 сЗаполнение 61.9 c 113.5 c
Core Data vs SQLite PO
Core Data SQLite POCоздание БД 0.11 с 0.02 сЗаполнение 61.9 c 113.5 cQuery by random key 29.2 c 46.9 c
Core Data vs SQLite PO
Core Data SQLite POCоздание БД 0.11 с 0.02 сЗаполнение 61.9 c 113.5 cQuery by random key 29.2 c 46.9 cQBRK on indexed field 19.3 c 9.4 c
Core Data vs SQLite PO
Core Data немного быстрее
Core Data немного быстрее
НО!
У Core Data тоже есть минусы
• Не SQL формат запросов• Сырая документация (не полное
портирование из MacOS X)
У Core Data тоже есть минусы
• Не SQL формат запросов• Сырая документация (не полное
портирование из MacOS X)• Недокументированные особенности
работы
У Core Data тоже есть минусы
• Не SQL формат запросов• Сырая документация (не полное
портирование из MacOS X)• Недокументированные особенности
работы• RTFM
У Core Data тоже есть минусы
• Не SQL формат запросов• Сырая документация (не полное
портирование из MacOS X)• Недокументированные особенности
работы• RTFM GIYF ("Google Is Your Friend")• Сложно* создавать вложенные запросы
О чем не надо забывать
• iPhone – это не Desktop• 16 Гб места • 128 МB RAM• 40 MB RAM под приложение• didReceiveMemoryWarning сразу, как только
используется больше 3 MB
Спасибо за внимание!Тайкало ПавелEmail:[email protected]:tt.kilew
Отдельное спасибо