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

27
Разработка под iOS Лекция 5 Работа с данными Глеб Тарасов

Upload: -

Post on 28-Nov-2014

2.038 views

Category:

Education


0 download

DESCRIPTION

 

TRANSCRIPT

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

Разработка под iOS

Лекция 5

Работа с данными

Глеб Тарасов

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

Варианты хранения данных?

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

Яндекс.Карты

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

Аудиокнига

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

Аудиокнига с возможностью покупки

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

Новости

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

Новости с возможностью оффлайн чтения

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

Лекции и тесты

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

10 000 магазиновсразу после установки программы

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

• Файлы (загружаются из сети или поставляются вместе с приложением)

• Данные загружаются из сети в память и нигде не сохраняются

• Данные загружаются из сети, кешируются на какое-то время

• Данные загружаются из сети, сохраняются в базу данных

• База данных поставляется вместе с приложением

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

Работа с файлами

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

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;

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

Папки

Файл поставляется вместе с приложением

NSString *path = [[NSBundle mainBundle] pathForResource:@"data" ofType:@"txt"];

Корневая папка bundle

NSString *path = [[NSBundle mainBundle] bundlePath];

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

ПапкиПапка Documents (для долгого хранения)

NSString *path = [NSSearchPathForDirectoriesInDomains( NSCachesDirectory, NSUserDomainMask, YES) lastObject];

Папка Caches (для хранения кеша)

NSString *path = [NSSearchPathForDirectoriesInDomains( NSDocumentsDirectory, NSUserDomainMask, YES) lastObject];

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

Работа с сетью

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

GET

POST

http://site.ru/request.php?param1=test&param2=123

http://site.ru/request.phpТело запроса:

<request query="load-courses"><courses query="create">

<course id="100"/> <course id="312"/>

</courses >< /request >

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

XMLhttp://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>

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

JSONhttp://ru.wikipedia.org/wiki/

JSON{ "firstName": "Иван", "lastName": "Иванов", "address": { "streetAddress": "Московское ш., 101, кв.101", "city": "Ленинград", "postalCode": 101101 }, "phoneNumbers": [ "812 123-1234", "916 123-4567" ]}

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

RESThttp://ru.wikipedia.org/wiki/REST

• Сервер не держит сессию с клиентом, не хранит состояние.

• Каждый запрос от клиента содержит всю нужную информацию для ответа.

• Запросы кешируемы

• …

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

Get-запрос

NSURL *url = [NSURL URLWithString:@"http://site.ru/request.php?param=1"];

NSString *result = [NSString stringWithContentsOfURL:url encoding:NSUTF8StringEncoding error:nil];

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

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];

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

Серверная часть

• Xостинг + скрипты на Python, PHP, Ruby.

• Облако + скрипты (Google App Engine, Amazon EC, Microsoft Azure и т.д.)

• Облачная NoSQL база без скриптов (Amazon SimpleDB, MongoDB и т.д.)

• Сторонние сервисы

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

Parse http://parse.com

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

Внутренняя база данных

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

SQLite

• Работа напрямую через API на Си

• Использование сторонних ORM на Objective-C

• CoreData (ORM от Apple)

Встраиваемая база данных с поддержкой SQL-синтаксиса.

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

CoreData(демонстрация)