49
Использование CoreData в iPhone приложениях

Павел Тайкало - Использование CoreData в iPhone приложения

Embed Size (px)

DESCRIPTION

 

Citation preview

Page 1: Павел Тайкало - Использование CoreData в iPhone приложения

Использование CoreData в iPhone приложениях

Page 2: Павел Тайкало - Использование CoreData в iPhone приложения

Что такое Core Data

• Framework, появился в iPhone 3.0 SDK• “Полноценный” ORM• Поддерживает три вида хранилищ

данных(InMemory, SQLite, Binary)• Имеет графический интерфейс для

редактирования модели данных в XCode

Page 3: Павел Тайкало - Использование CoreData в iPhone приложения

Еще немного о возможностях Core Data

• Эффективная работа с графами объектов• Операции Undo/Redo на графе объектов• Поддержка миграции между версиями

моделей данных• Работа с несколькими хранилищами

одновременно

Page 4: Павел Тайкало - Использование CoreData в iPhone приложения

Основные части Core Data

PersistentStoreCoordinator

Page 5: Павел Тайкало - Использование CoreData в iPhone приложения

Основные части Core Data

PersistentStoreCoordinator Отвечает за координацию Хранилищ данных (Persistence Stores)

Page 6: Павел Тайкало - Использование CoreData в iPhone приложения

Основные части Core Data

PersistentStoreCoordinator

Binary

PersistentStoresSQLite

Page 7: Павел Тайкало - Использование CoreData в iPhone приложения

Основные части Core Data

PersistentStoreCoordinator

Binary

PersistentStores

SQLite

Отвечают за хранение данных в определенном виде (SQLite, Binary, …)

Page 8: Павел Тайкало - Использование CoreData в iPhone приложения

Основные части Core Data

PersistentStoreCoordinator

Binary

PersistentStores

SQLite

ManagedObjectModel

Page 9: Павел Тайкало - Использование CoreData в iPhone приложения

Основные части Core Data

PersistentStoreCoordinator

Binary

PersistentStores

SQLite

ManagedObjectModel

Хранит информацио о модели данных. О сущностях, связях, зависимостях

Page 10: Павел Тайкало - Использование CoreData в iPhone приложения

Основные части Core Data

PersistentStoreCoordinator

Binary

PersistentStores

SQLite

ManagedObjectModel

ManagedObjectContext

Page 11: Павел Тайкало - Использование CoreData в iPhone приложения

Основные части Core Data

PersistentStoreCoordinator

Binary

PersistentStores

SQLite

ManagedObjectModel

ManagedObjectContextСодержит активные объекты

Page 12: Павел Тайкало - Использование CoreData в iPhone приложения

Основные части Core Data

PersistentStoreCoordinator

Binary

PersistentStores

SQLite

ManagedObjectModel

ManagedObjectContext

ManagedObjects

Page 13: Павел Тайкало - Использование CoreData в iPhone приложения

Как можно использовать?

• Хранение данных- Локальный кеш- Полноценное хранилище

• Модель данных- Модели, состоящие из набора сущностей со

сложными взаимосвязями- Редактируемая модель с возможностью

сохранения состояний

Page 14: Павел Тайкало - Использование CoreData в iPhone приложения

Использование Core Data

Хранение данных

Page 15: Павел Тайкало - Использование CoreData в iPhone приложения

Пример модели данных из реального приложения

Page 16: Павел Тайкало - Использование CoreData в iPhone приложения

Использование Core Data

модель данных для графического редактора

Page 17: Павел Тайкало - Использование CoreData в iPhone приложения

модель данных для графического редактора

player

MO

DEL

VIEW

Page 18: Павел Тайкало - Использование CoreData в iPhone приложения

модель данных для графического редактора

player

MO

DEL

VIEW

SAVE

Page 19: Павел Тайкало - Использование CoreData в iPhone приложения

модель данных для графического редактора

player

hat

player

shoesMO

DEL

VIEW

EDIT

Page 20: Павел Тайкало - Использование CoreData в iPhone приложения

модель данных для графического редактора

player

hat

player

shoesMO

DEL

VIEW

SAVE

Page 21: Павел Тайкало - Использование CoreData в iPhone приложения

модель данных для графического редактора

player

hat

player

shoesMO

DEL

VIEW

redo

undo

Page 22: Павел Тайкало - Использование CoreData в iPhone приложения

модель данных для графического редактора

player

hat

player

shoes

hair

playershoesM

OD

ELVI

EW

redo

undo

EDIT

Page 23: Павел Тайкало - Использование CoreData в iPhone приложения

модель данных для графического редактора

player

hat

player

shoes

hair

playershoesM

OD

ELVI

EW

redo

undo

SAVE

Page 24: Павел Тайкало - Использование CoreData в iPhone приложения

модель данных для графического редактора

player

hat

player

shoes

hair

playershoesM

OD

ELVI

EW

redo redo

undoundo

Page 25: Павел Тайкало - Использование CoreData в iPhone приложения

Кроме Core Data что-то надо?

Page 26: Павел Тайкало - Использование CoreData в iPhone приложения

Откуда приходят данные в приложение

• С сервера– Результаты поиска– Состояние системы– Кеш

• От пользователя– Прямой ввод данных

Page 27: Павел Тайкало - Использование CoreData в iPhone приложения

Откуда приходят данные в приложение

• С сервера– Результаты поиска– Состояние системы– Кеш

• От пользователя– Прямой ввод данных

JSON

XML

Core

Dat

a

Input

Page 28: Павел Тайкало - Использование CoreData в iPhone приложения

Откуда приходят данные в приложение

• С сервера– Результаты поиска– Состояние системы– Кеш

• От пользователя– Прямой ввод данных

JSON

XML

Core

Dat

a

Input

Page 29: Павел Тайкало - Использование CoreData в iPhone приложения

Лучше не так

JSON

XML

Core

Dat

a

Input

Page 30: Павел Тайкало - Использование CoreData в iPhone приложения

Структурное решение

JSON

XML

(кон

крет

ная

реал

изац

ия)

Core

Dat

a/SQ

Lite

/FM

DB

Инт

ерф

ейс

Input

Page 31: Павел Тайкало - Использование CoreData в iPhone приложения

Структура приложения

• XML / JSON парсер• Протокол(Интерфейс) доступа к

данным• Конкретная реализация доступа к

данным (CoreData, SQLite PO, FMDB)

Page 32: Павел Тайкало - Использование CoreData в iPhone приложения

Удобно. Просто.

Page 33: Павел Тайкало - Использование CoreData в iPhone приложения

Удобно. Просто.

А что с производительностью?

Page 34: Павел Тайкало - Использование CoreData в iPhone приложения

Core Data vs SQLite PO

Page 35: Павел Тайкало - Использование CoreData в iPhone приложения

Core Data vs SQLite PO

• Количество Объектов – 1000• Количество Запросов – 1000• 17 полей• Индекс по полю ‘phone’

Page 36: Павел Тайкало - Использование CoreData в iPhone приложения

Core Data vs SQLite POCore Data SQLite PO

Cоздание БД 0.11 с 0.02 с

Page 37: Павел Тайкало - Использование CoreData в iPhone приложения

Core Data SQLite POCоздание БД 0.11 с 0.02 сЗаполнение 8.3 с 113.5 c

Core Data vs SQLite PO

Page 38: Павел Тайкало - Использование CoreData в iPhone приложения

Core Data SQLite POCоздание БД 0.11 с 0.02 сЗаполнение 61.9 c 113.5 c

Core Data vs SQLite PO

Page 39: Павел Тайкало - Использование CoreData в iPhone приложения

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

Page 40: Павел Тайкало - Использование CoreData в iPhone приложения

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

Page 41: Павел Тайкало - Использование CoreData в iPhone приложения

Core Data немного быстрее

Page 42: Павел Тайкало - Использование CoreData в iPhone приложения

Core Data немного быстрее

НО!

Page 43: Павел Тайкало - Использование CoreData в iPhone приложения

У Core Data тоже есть минусы

• Не SQL формат запросов• Сырая документация (не полное

портирование из MacOS X)

Page 44: Павел Тайкало - Использование CoreData в iPhone приложения

У Core Data тоже есть минусы

• Не SQL формат запросов• Сырая документация (не полное

портирование из MacOS X)• Недокументированные особенности

работы

Page 45: Павел Тайкало - Использование CoreData в iPhone приложения

У Core Data тоже есть минусы

• Не SQL формат запросов• Сырая документация (не полное

портирование из MacOS X)• Недокументированные особенности

работы• RTFM

Page 46: Павел Тайкало - Использование CoreData в iPhone приложения

У Core Data тоже есть минусы

• Не SQL формат запросов• Сырая документация (не полное

портирование из MacOS X)• Недокументированные особенности

работы• RTFM GIYF ("Google Is Your Friend")• Сложно* создавать вложенные запросы

Page 47: Павел Тайкало - Использование CoreData в iPhone приложения

О чем не надо забывать

• iPhone – это не Desktop• 16 Гб места • 128 МB RAM• 40 MB RAM под приложение• didReceiveMemoryWarning сразу, как только

используется больше 3 MB

Page 48: Павел Тайкало - Использование CoreData в iPhone приложения

Спасибо за внимание!Тайкало ПавелEmail:[email protected]:tt.kilew

Page 49: Павел Тайкало - Использование CoreData в iPhone приложения

Отдельное спасибо