Разработка под iOS        Лекция 5Работа с данными                       Глеб Тарасов
Варианты хранения данных?
Яндекс.Карты
Аудиокнига
Аудиокнига свозможностью   покупки
Новости
Новости с возможностьюоффлайн чтения
Лекции и тесты
10 000 магазинов   сразу после    установки   программы
•   Файлы (загружаются из сети или поставляются    вместе с приложением)•   Данные загружаются из сети в память и нигде   ...
Работа с файлами
NSFileManager - удалять, копировать файлы и т.д.- (BOOL)removeItemAtPath:(NSString *)path                              err...
Папки             Файл поставляется вместе с                   приложениемNSString *path = [[NSBundle mainBundle]         ...
Папки         Папка Documents (для долгого хранения)NSString *path = [NSSearchPathForDirectoriesInDomains(                ...
Работа с сетью
http://site.ru/app/request.php?cmd=get_news                 Запрос                    Ответ
GEThttp://site.ru/request.php?param1=test&param2=123          POSThttp://site.ru/request.php                             Т...
XML        http://ru.wikipedia.org/wiki/XML<?xml version="1.0" encoding="UTF-8"?><recipe name="хлеб" preptime="5" cooktime...
JSONhttp://ru.wikipedia.org/wiki/            JSON{   "firstName": "Иван",   "lastName": "Иванов",   "address": {       "st...
REST         http://ru.wikipedia.org/wiki/REST• Сервер не держит сессию с клиентом, не хранит  состояние.• Каждый запрос о...
Get-запросNSURL *url = [NSURL URLWithString:@"http://site.ru/request.php?param=1"];NSString *result = [NSString stringWith...
POST-запросNSURL *url = [NSURL URLWithString:@"http://site.ru/request.php"];NSMutableURLRequest *request = [NSMutableURLRe...
Серверная часть• Xостинг + скрипты на Python, PHP, Ruby.• Облако + скрипты (Google App Engine,  Amazon EC, Microsoft Azure...
Parse   http://parse.com
Внутренняя база данных
SQLiteВстраиваемая база данных с поддержкой SQL-синтаксиса. • Работа напрямую через API на Си • Использование сторонних OR...
CoreData(демонстрация)
Upcoming SlideShare
Loading in …5
×

Курсы по мобильной разработке под iOS. 5 лекция. Работа с данными

1,760
-1

Published on

Published in: Education
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total Views
1,760
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
40
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Курсы по мобильной разработке под iOS. 5 лекция. Работа с данными

  1. 1. Разработка под iOS Лекция 5Работа с данными Глеб Тарасов
  2. 2. Варианты хранения данных?
  3. 3. Яндекс.Карты
  4. 4. Аудиокнига
  5. 5. Аудиокнига свозможностью покупки
  6. 6. Новости
  7. 7. Новости с возможностьюоффлайн чтения
  8. 8. Лекции и тесты
  9. 9. 10 000 магазинов сразу после установки программы
  10. 10. • Файлы (загружаются из сети или поставляются вместе с приложением)• Данные загружаются из сети в память и нигде не сохраняются• Данные загружаются из сети, кешируются на какое-то время• Данные загружаются из сети, сохраняются в базу данных• База данных поставляется вместе с приложением
  11. 11. Работа с файлами
  12. 12. NSFileManager - удалять, копировать файлы и т.д.- (BOOL)removeItemAtPath:(NSString *)path error:(NSError **)error;- (BOOL)fileExistsAtPath:(NSString *)path; NSData - бинарные данные- (BOOL)writeToFile:(NSString *)path atomically:(BOOL)useAuxiliaryFile; NSString - текстовые данные+ (id)stringWithContentsOfFile:(NSString *)path encoding:(NSStringEncoding)enc error:(NSError **)error;
  13. 13. Папки Файл поставляется вместе с приложениемNSString *path = [[NSBundle mainBundle] pathForResource:@"data" ofType:@"txt"]; Корневая папка bundleNSString *path = [[NSBundle mainBundle] bundlePath];
  14. 14. Папки Папка Documents (для долгого хранения)NSString *path = [NSSearchPathForDirectoriesInDomains( NSDocumentsDirectory, NSUserDomainMask, YES) lastObject]; Папка Caches (для хранения кеша)NSString *path = [NSSearchPathForDirectoriesInDomains( NSCachesDirectory, NSUserDomainMask, YES) lastObject];
  15. 15. Работа с сетью
  16. 16. http://site.ru/app/request.php?cmd=get_news Запрос Ответ
  17. 17. GEThttp://site.ru/request.php?param1=test&param2=123 POSThttp://site.ru/request.php Тело запроса: <request query="load-courses"> <courses query="create"> <course id="100"/> <course id="312"/> </courses > < /request >
  18. 18. XML http://ru.wikipedia.org/wiki/XML<?xml version="1.0" encoding="UTF-8"?><recipe name="хлеб" preptime="5" cooktime="180"> <title>Простой хлеб</title> <ingredient amount="3" unit="стакан">Мука</ingredient> <ingredient amount="0.25" unit="грамм">Дрожжи</ingredient> <ingredient amount="1.5" unit="стакан">Тёплая вода</ingredient> <ingredient amount="1" unit="чайная ложка">Соль</ingredient> <instructions> <step>Смешать все ингредиенты и тщательно замесить.</step> <step>Закрыть тканью и оставить на один час в тёплом помещении.</step> <!-- <step>Почитать вчерашнюю газету.</step> - это сомнительныйшаг... --> <step>Замесить ещё раз, положить на противень и поставить вдуховку.</step> </instructions></recipe>
  19. 19. JSONhttp://ru.wikipedia.org/wiki/ JSON{ "firstName": "Иван", "lastName": "Иванов", "address": { "streetAddress": "Московское ш.,101, кв.101", "city": "Ленинград", "postalCode": 101101 }, "phoneNumbers": [ "812 123-1234", "916 123-4567" ]}
  20. 20. REST http://ru.wikipedia.org/wiki/REST• Сервер не держит сессию с клиентом, не хранит состояние.• Каждый запрос от клиента содержит всю нужную информацию для ответа.• Запросы кешируемы•…
  21. 21. Get-запросNSURL *url = [NSURL URLWithString:@"http://site.ru/request.php?param=1"];NSString *result = [NSString stringWithContentsOfURL:url encoding:NSUTF8StringEncoding error:nil];
  22. 22. POST-запросNSURL *url = [NSURL URLWithString:@"http://site.ru/request.php"];NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url];request.HTTPMethod = @"POST";NSString *request = @"текст запроса";request.HTTPBody = [request dataUsingEncoding:NSUTF8StringEncoding];NSData *resultData = [NSURLConnection sendSynchronousRequest:request returningResponse:nil error:nil];NSString *resultString = [[NSString alloc] initWithData:resultData encoding:NSUTF8StringEncoding];
  23. 23. Серверная часть• Xостинг + скрипты на Python, PHP, Ruby.• Облако + скрипты (Google App Engine, Amazon EC, Microsoft Azure и т.д.)• Облачная NoSQL база без скриптов (Amazon SimpleDB, MongoDB и т.д.)• Сторонние сервисы
  24. 24. Parse http://parse.com
  25. 25. Внутренняя база данных
  26. 26. SQLiteВстраиваемая база данных с поддержкой SQL-синтаксиса. • Работа напрямую через API на Си • Использование сторонних ORM на Objective-C • CoreData (ORM от Apple)
  27. 27. CoreData(демонстрация)
  1. A particular slide catching your eye?

    Clipping is a handy way to collect important slides you want to go back to later.

×