SlideShare a Scribd company logo
1 of 27
Download to read offline
Разработка под iOS




        Лекция 5


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



                       Глеб Тарасов
Варианты хранения данных?
Яндекс.Карты
Аудиокнига
Аудиокнига с
возможностью
   покупки
Новости
Новости с
 возможностью
оффлайн чтения
Лекции и тесты
10 000 магазинов
   сразу после
    установки
   программы
•   Файлы (загружаются из сети или поставляются
    вместе с приложением)
•   Данные загружаются из сети в память и нигде
    не сохраняются
•   Данные загружаются из сети, кешируются на
    какое-то время
•   Данные загружаются из сети, сохраняются в
    базу данных
•   База данных поставляется вместе с
    приложением
Работа с файлами
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;
Папки

             Файл поставляется вместе с
                   приложением
NSString *path = [[NSBundle mainBundle]
                pathForResource:@"data" ofType:@"txt"];

                   Корневая папка
                       bundle
NSString *path = [[NSBundle mainBundle] bundlePath];
Папки
         Папка Documents (для долгого хранения)
NSString *path = [NSSearchPathForDirectoriesInDomains(
                                                         NSDocumentsDirectory,
                                                         NSUserDomainMask, YES)
                  lastObject];




                    Папка Caches (для хранения
                              кеша)
NSString *path = [NSSearchPathForDirectoriesInDomains(
                                                         NSCachesDirectory,
                                                         NSUserDomainMask, YES)
                  lastObject];
Работа с сетью
http://site.ru/app/request.php?cmd=get_news



                 Запрос



                    Ответ
GET
http://site.ru/request.php?param1=test&param2=123

          POST
http://site.ru/request.php
                             Тело запроса:
                  <request query="load-courses">
                     <courses query="create">
                         <course id="100"/>	

                         <course id="312"/>	

                     </courses >
                  < /request >
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>
JSON
http://ru.wikipedia.org/wiki/
            JSON
{
   "firstName": "Иван",
   "lastName": "Иванов",
   "address": {
       "streetAddress": "Московское ш.,
101, кв.101",
       "city": "Ленинград",
       "postalCode": 101101
   },
   "phoneNumbers": [
       "812 123-1234",
       "916 123-4567"
   ]
}
REST
         http://ru.wikipedia.org/wiki/REST


• Сервер не держит сессию с клиентом, не хранит
  состояние.
• Каждый запрос от клиента содержит всю нужную
  информацию для ответа.
• Запросы кешируемы
•…
Get-запрос
NSURL *url = [NSURL URLWithString:@"http://site.ru/request.php?param=1"];

NSString *result = [NSString stringWithContentsOfURL:url
                                            encoding:NSUTF8StringEncoding
                                               error:nil];
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];
Серверная часть

• Xостинг + скрипты на Python, PHP, Ruby.
• Облако + скрипты (Google App Engine,
  Amazon EC, Microsoft Azure и т.д.)
• Облачная NoSQL база без скриптов
  (Amazon SimpleDB, MongoDB и т.д.)
• Сторонние сервисы
Parse   http://parse.com
Внутренняя база данных
SQLite
Встраиваемая база данных с поддержкой SQL-синтаксиса.




 • Работа напрямую через API на Си
 • Использование сторонних ORM на
    Objective-C
 • CoreData (ORM от Apple)
CoreData
(демонстрация)

More Related Content

What's hot

ClickHouse как решение для бизнес аналитики. Дмитрий Кузьмин
ClickHouse как решение для бизнес аналитики. Дмитрий КузьминClickHouse как решение для бизнес аналитики. Дмитрий Кузьмин
ClickHouse как решение для бизнес аналитики. Дмитрий КузьминHOWWEDOIT
 
Сравнение парсеров Json. Android SDK, Gson, Jackson
Сравнение парсеров Json. Android SDK, Gson, JacksonСравнение парсеров Json. Android SDK, Gson, Jackson
Сравнение парсеров Json. Android SDK, Gson, JacksonArtjoker
 
работа с сетью
работа с сетьюработа с сетью
работа с сетьюNoveo
 
Иван Бибилов: http-протокол
Иван Бибилов: http-протоколИван Бибилов: http-протокол
Иван Бибилов: http-протоколYandex
 
Сравнение форматов и библиотек сериализации / Антон Рыжов (Qrator Labs)
Сравнение форматов и библиотек сериализации / Антон Рыжов (Qrator Labs)Сравнение форматов и библиотек сериализации / Антон Рыжов (Qrator Labs)
Сравнение форматов и библиотек сериализации / Антон Рыжов (Qrator Labs)Ontico
 
NoSQL внутри SQL: приземленные вопросы практического применения / Дмитрий До...
NoSQL внутри SQL: приземленные вопросы практического применения /  Дмитрий До...NoSQL внутри SQL: приземленные вопросы практического применения /  Дмитрий До...
NoSQL внутри SQL: приземленные вопросы практического применения / Дмитрий До...Ontico
 
Разработка real-time приложений с RethinkDB / Илья Вербицкий (Независимый кон...
Разработка real-time приложений с RethinkDB / Илья Вербицкий (Независимый кон...Разработка real-time приложений с RethinkDB / Илья Вербицкий (Независимый кон...
Разработка real-time приложений с RethinkDB / Илья Вербицкий (Независимый кон...Ontico
 
Lobanov_Cloud-Comput..
Lobanov_Cloud-Comput..Lobanov_Cloud-Comput..
Lobanov_Cloud-Comput..webhostingguy
 
Как мы сбежали от PostgreSQL или когда реляционная БД не справляется, Куманяе...
Как мы сбежали от PostgreSQL или когда реляционная БД не справляется, Куманяе...Как мы сбежали от PostgreSQL или когда реляционная БД не справляется, Куманяе...
Как мы сбежали от PostgreSQL или когда реляционная БД не справляется, Куманяе...Coub
 
Механика DDoS (Александр Крижановский)
Механика DDoS (Александр Крижановский)Механика DDoS (Александр Крижановский)
Механика DDoS (Александр Крижановский)Ontico
 
HSE{Consult}: DevOps – новая методология разработки
HSE{Consult}: DevOps – новая методология разработкиHSE{Consult}: DevOps – новая методология разработки
HSE{Consult}: DevOps – новая методология разработкиBusiness incubator HSE
 
Разработка высокопроизводительных серверных приложений для Linux/Unix (Алекса...
Разработка высокопроизводительных серверных приложений для Linux/Unix (Алекса...Разработка высокопроизводительных серверных приложений для Linux/Unix (Алекса...
Разработка высокопроизводительных серверных приложений для Linux/Unix (Алекса...Ontico
 
Что особенного в СУБД для данных в оперативной памяти / Константин Осипов (Ta...
Что особенного в СУБД для данных в оперативной памяти / Константин Осипов (Ta...Что особенного в СУБД для данных в оперативной памяти / Константин Осипов (Ta...
Что особенного в СУБД для данных в оперативной памяти / Константин Осипов (Ta...Ontico
 
Новое в Mongodb 2.4
Новое в Mongodb 2.4Новое в Mongodb 2.4
Новое в Mongodb 2.4Gleb Lebedev
 
Drupal 8 API для разработчиков
Drupal 8 API для разработчиковDrupal 8 API для разработчиков
Drupal 8 API для разработчиковDrupalSPB
 
Pavel Dovbush Toster
Pavel Dovbush Toster Pavel Dovbush Toster
Pavel Dovbush Toster Pavel Dovbush
 
Практическое применение HTML5 в Я.Почте
Практическое применение HTML5 в Я.ПочтеПрактическое применение HTML5 в Я.Почте
Практическое применение HTML5 в Я.ПочтеAlexey Androsov
 

What's hot (20)

ClickHouse как решение для бизнес аналитики. Дмитрий Кузьмин
ClickHouse как решение для бизнес аналитики. Дмитрий КузьминClickHouse как решение для бизнес аналитики. Дмитрий Кузьмин
ClickHouse как решение для бизнес аналитики. Дмитрий Кузьмин
 
Сравнение парсеров Json. Android SDK, Gson, Jackson
Сравнение парсеров Json. Android SDK, Gson, JacksonСравнение парсеров Json. Android SDK, Gson, Jackson
Сравнение парсеров Json. Android SDK, Gson, Jackson
 
работа с сетью
работа с сетьюработа с сетью
работа с сетью
 
Анализируем данные с Clickhouse
Анализируем данные с  ClickhouseАнализируем данные с  Clickhouse
Анализируем данные с Clickhouse
 
Иван Бибилов: http-протокол
Иван Бибилов: http-протоколИван Бибилов: http-протокол
Иван Бибилов: http-протокол
 
Сравнение форматов и библиотек сериализации / Антон Рыжов (Qrator Labs)
Сравнение форматов и библиотек сериализации / Антон Рыжов (Qrator Labs)Сравнение форматов и библиотек сериализации / Антон Рыжов (Qrator Labs)
Сравнение форматов и библиотек сериализации / Антон Рыжов (Qrator Labs)
 
NoSQL внутри SQL: приземленные вопросы практического применения / Дмитрий До...
NoSQL внутри SQL: приземленные вопросы практического применения /  Дмитрий До...NoSQL внутри SQL: приземленные вопросы практического применения /  Дмитрий До...
NoSQL внутри SQL: приземленные вопросы практического применения / Дмитрий До...
 
Разработка real-time приложений с RethinkDB / Илья Вербицкий (Независимый кон...
Разработка real-time приложений с RethinkDB / Илья Вербицкий (Независимый кон...Разработка real-time приложений с RethinkDB / Илья Вербицкий (Независимый кон...
Разработка real-time приложений с RethinkDB / Илья Вербицкий (Независимый кон...
 
Lobanov_Cloud-Comput..
Lobanov_Cloud-Comput..Lobanov_Cloud-Comput..
Lobanov_Cloud-Comput..
 
Major mistakes in site moving
Major mistakes in site movingMajor mistakes in site moving
Major mistakes in site moving
 
Как мы сбежали от PostgreSQL или когда реляционная БД не справляется, Куманяе...
Как мы сбежали от PostgreSQL или когда реляционная БД не справляется, Куманяе...Как мы сбежали от PostgreSQL или когда реляционная БД не справляется, Куманяе...
Как мы сбежали от PostgreSQL или когда реляционная БД не справляется, Куманяе...
 
Механика DDoS (Александр Крижановский)
Механика DDoS (Александр Крижановский)Механика DDoS (Александр Крижановский)
Механика DDoS (Александр Крижановский)
 
HSE{Consult}: DevOps – новая методология разработки
HSE{Consult}: DevOps – новая методология разработкиHSE{Consult}: DevOps – новая методология разработки
HSE{Consult}: DevOps – новая методология разработки
 
Разработка высокопроизводительных серверных приложений для Linux/Unix (Алекса...
Разработка высокопроизводительных серверных приложений для Linux/Unix (Алекса...Разработка высокопроизводительных серверных приложений для Linux/Unix (Алекса...
Разработка высокопроизводительных серверных приложений для Linux/Unix (Алекса...
 
Mysql vs postgresql
Mysql vs postgresqlMysql vs postgresql
Mysql vs postgresql
 
Что особенного в СУБД для данных в оперативной памяти / Константин Осипов (Ta...
Что особенного в СУБД для данных в оперативной памяти / Константин Осипов (Ta...Что особенного в СУБД для данных в оперативной памяти / Константин Осипов (Ta...
Что особенного в СУБД для данных в оперативной памяти / Константин Осипов (Ta...
 
Новое в Mongodb 2.4
Новое в Mongodb 2.4Новое в Mongodb 2.4
Новое в Mongodb 2.4
 
Drupal 8 API для разработчиков
Drupal 8 API для разработчиковDrupal 8 API для разработчиков
Drupal 8 API для разработчиков
 
Pavel Dovbush Toster
Pavel Dovbush Toster Pavel Dovbush Toster
Pavel Dovbush Toster
 
Практическое применение HTML5 в Я.Почте
Практическое применение HTML5 в Я.ПочтеПрактическое применение HTML5 в Я.Почте
Практическое применение HTML5 в Я.Почте
 

Viewers also liked

Курсы по мобильной разработке. 1 лекция. Знакомство с iOS
Курсы по мобильной разработке. 1 лекция. Знакомство с iOSКурсы по мобильной разработке. 1 лекция. Знакомство с iOS
Курсы по мобильной разработке. 1 лекция. Знакомство с iOSГлеб Тарасов
 
Интуит. Разработка приложений для iOS. Лекция 12. Тестирование, публикация и др.
Интуит. Разработка приложений для iOS. Лекция 12. Тестирование, публикация и др.Интуит. Разработка приложений для iOS. Лекция 12. Тестирование, публикация и др.
Интуит. Разработка приложений для iOS. Лекция 12. Тестирование, публикация и др.Глеб Тарасов
 
Первое приложение для iPhone
Первое приложение для iPhoneПервое приложение для iPhone
Первое приложение для iPhoneГлеб Тарасов
 
Курсы по мобильной разработке под iOS. 4 лекция. Возможности телефона
Курсы по мобильной разработке под iOS. 4 лекция. Возможности телефонаКурсы по мобильной разработке под iOS. 4 лекция. Возможности телефона
Курсы по мобильной разработке под iOS. 4 лекция. Возможности телефонаГлеб Тарасов
 
Школа-студия разработки для iOS. Лекция 4. Работа с данными
Школа-студия разработки для iOS. Лекция 4. Работа с даннымиШкола-студия разработки для iOS. Лекция 4. Работа с данными
Школа-студия разработки для iOS. Лекция 4. Работа с даннымиГлеб Тарасов
 
Интуит. Разработка приложений для iOS. Лекция 5. Сложные Views
Интуит. Разработка приложений для iOS. Лекция 5. Сложные ViewsИнтуит. Разработка приложений для iOS. Лекция 5. Сложные Views
Интуит. Разработка приложений для iOS. Лекция 5. Сложные ViewsГлеб Тарасов
 
"Удобный и расширяемый роутинг в iOS-приложении" Тимур Юсипов (Avito)
"Удобный и расширяемый роутинг в iOS-приложении" Тимур  Юсипов (Avito)"Удобный и расширяемый роутинг в iOS-приложении" Тимур  Юсипов (Avito)
"Удобный и расширяемый роутинг в iOS-приложении" Тимур Юсипов (Avito)AvitoTech
 
Rambler.iOS #6: App delegate - разделяй и властвуй
Rambler.iOS #6: App delegate - разделяй и властвуйRambler.iOS #6: App delegate - разделяй и властвуй
Rambler.iOS #6: App delegate - разделяй и властвуйRAMBLER&Co
 

Viewers also liked (9)

Курсы по мобильной разработке. 1 лекция. Знакомство с iOS
Курсы по мобильной разработке. 1 лекция. Знакомство с iOSКурсы по мобильной разработке. 1 лекция. Знакомство с iOS
Курсы по мобильной разработке. 1 лекция. Знакомство с iOS
 
Интуит. Разработка приложений для iOS. Лекция 12. Тестирование, публикация и др.
Интуит. Разработка приложений для iOS. Лекция 12. Тестирование, публикация и др.Интуит. Разработка приложений для iOS. Лекция 12. Тестирование, публикация и др.
Интуит. Разработка приложений для iOS. Лекция 12. Тестирование, публикация и др.
 
Первое приложение для iPhone
Первое приложение для iPhoneПервое приложение для iPhone
Первое приложение для iPhone
 
Курсы по мобильной разработке под iOS. 4 лекция. Возможности телефона
Курсы по мобильной разработке под iOS. 4 лекция. Возможности телефонаКурсы по мобильной разработке под iOS. 4 лекция. Возможности телефона
Курсы по мобильной разработке под iOS. 4 лекция. Возможности телефона
 
Школа-студия разработки для iOS. Лекция 4. Работа с данными
Школа-студия разработки для iOS. Лекция 4. Работа с даннымиШкола-студия разработки для iOS. Лекция 4. Работа с данными
Школа-студия разработки для iOS. Лекция 4. Работа с данными
 
Gleb Tarasov. Portfolio
Gleb Tarasov. PortfolioGleb Tarasov. Portfolio
Gleb Tarasov. Portfolio
 
Интуит. Разработка приложений для iOS. Лекция 5. Сложные Views
Интуит. Разработка приложений для iOS. Лекция 5. Сложные ViewsИнтуит. Разработка приложений для iOS. Лекция 5. Сложные Views
Интуит. Разработка приложений для iOS. Лекция 5. Сложные Views
 
"Удобный и расширяемый роутинг в iOS-приложении" Тимур Юсипов (Avito)
"Удобный и расширяемый роутинг в iOS-приложении" Тимур  Юсипов (Avito)"Удобный и расширяемый роутинг в iOS-приложении" Тимур  Юсипов (Avito)
"Удобный и расширяемый роутинг в iOS-приложении" Тимур Юсипов (Avito)
 
Rambler.iOS #6: App delegate - разделяй и властвуй
Rambler.iOS #6: App delegate - разделяй и властвуйRambler.iOS #6: App delegate - разделяй и властвуй
Rambler.iOS #6: App delegate - разделяй и властвуй
 

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

Интуит. Разработка приложений для iOS. Лекция 8. Работа с данными
Интуит. Разработка приложений для iOS. Лекция 8. Работа с даннымиИнтуит. Разработка приложений для iOS. Лекция 8. Работа с данными
Интуит. Разработка приложений для iOS. Лекция 8. Работа с даннымиГлеб Тарасов
 
Хранение данных в iPhone. (FMDB, SQL-Persistence, CoreData)
Хранение данных в iPhone. (FMDB, SQL-Persistence, CoreData)Хранение данных в iPhone. (FMDB, SQL-Persistence, CoreData)
Хранение данных в iPhone. (FMDB, SQL-Persistence, CoreData)Yandex
 
хранение данных
хранение данныххранение данных
хранение данныхNoveo
 
Встреча №8. NSIncrementalStore, или как заставить Core Data варить ваш собств...
Встреча №8. NSIncrementalStore, или как заставить Core Data варить ваш собств...Встреча №8. NSIncrementalStore, или как заставить Core Data варить ваш собств...
Встреча №8. NSIncrementalStore, или как заставить Core Data варить ваш собств...CocoaHeads
 
Active Record for CoreData
Active Record for CoreDataActive Record for CoreData
Active Record for CoreDataDmitriy Kuragin
 
Бодрящий микс из Selenium и TestNG- регрессионное тестирование руками разрабо...
Бодрящий микс из Selenium и TestNG- регрессионное тестирование руками разрабо...Бодрящий микс из Selenium и TestNG- регрессионное тестирование руками разрабо...
Бодрящий микс из Selenium и TestNG- регрессионное тестирование руками разрабо...Andrey Rebrov
 
Интеграция Яндекс Сервер
Интеграция Яндекс СерверИнтеграция Яндекс Сервер
Интеграция Яндекс СерверPVasili
 
Влад Ковташ — Yap Database
Влад Ковташ — Yap DatabaseВлад Ковташ — Yap Database
Влад Ковташ — Yap DatabaseCocoaHeads
 
RxJava + Retrofit
RxJava + RetrofitRxJava + Retrofit
RxJava + RetrofitDev2Dev
 
Web осень 2012 лекция 4
Web осень 2012 лекция 4Web осень 2012 лекция 4
Web осень 2012 лекция 4Technopark
 
Страх и ненависть в Event Bus
Страх и ненависть в Event BusСтрах и ненависть в Event Bus
Страх и ненависть в Event Bus0leGG
 
Олег Годовых «Страх и ненависть в Event Bus»
Олег Годовых «Страх и ненависть в Event Bus»Олег Годовых «Страх и ненависть в Event Bus»
Олег Годовых «Страх и ненависть в Event Bus»DevDay
 
JavaScript Базовый. Занятие 08.
JavaScript Базовый. Занятие 08.JavaScript Базовый. Занятие 08.
JavaScript Базовый. Занятие 08.Igor Shkulipa
 
JavaScript-библиотека
JavaScript-библиотекаJavaScript-библиотека
JavaScript-библиотекаVasya Petrov
 

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

Интуит. Разработка приложений для iOS. Лекция 8. Работа с данными
Интуит. Разработка приложений для iOS. Лекция 8. Работа с даннымиИнтуит. Разработка приложений для iOS. Лекция 8. Работа с данными
Интуит. Разработка приложений для iOS. Лекция 8. Работа с данными
 
Хранение данных в iPhone. (FMDB, SQL-Persistence, CoreData)
Хранение данных в iPhone. (FMDB, SQL-Persistence, CoreData)Хранение данных в iPhone. (FMDB, SQL-Persistence, CoreData)
Хранение данных в iPhone. (FMDB, SQL-Persistence, CoreData)
 
хранение данных
хранение данныххранение данных
хранение данных
 
Squeek school #6
Squeek school #6Squeek school #6
Squeek school #6
 
Встреча №8. NSIncrementalStore, или как заставить Core Data варить ваш собств...
Встреча №8. NSIncrementalStore, или как заставить Core Data варить ваш собств...Встреча №8. NSIncrementalStore, или как заставить Core Data варить ваш собств...
Встреча №8. NSIncrementalStore, или как заставить Core Data варить ваш собств...
 
Jsfwdays 2013-2
Jsfwdays 2013-2Jsfwdays 2013-2
Jsfwdays 2013-2
 
Avito / SPA Meetup 2
Avito / SPA Meetup 2Avito / SPA Meetup 2
Avito / SPA Meetup 2
 
Active Record for CoreData
Active Record for CoreDataActive Record for CoreData
Active Record for CoreData
 
Js fuckworks
Js fuckworksJs fuckworks
Js fuckworks
 
Sphinx search
Sphinx searchSphinx search
Sphinx search
 
Бодрящий микс из Selenium и TestNG- регрессионное тестирование руками разрабо...
Бодрящий микс из Selenium и TestNG- регрессионное тестирование руками разрабо...Бодрящий микс из Selenium и TestNG- регрессионное тестирование руками разрабо...
Бодрящий микс из Selenium и TestNG- регрессионное тестирование руками разрабо...
 
Интеграция Яндекс Сервер
Интеграция Яндекс СерверИнтеграция Яндекс Сервер
Интеграция Яндекс Сервер
 
Влад Ковташ — Yap Database
Влад Ковташ — Yap DatabaseВлад Ковташ — Yap Database
Влад Ковташ — Yap Database
 
PowerShell
PowerShellPowerShell
PowerShell
 
RxJava + Retrofit
RxJava + RetrofitRxJava + Retrofit
RxJava + Retrofit
 
Web осень 2012 лекция 4
Web осень 2012 лекция 4Web осень 2012 лекция 4
Web осень 2012 лекция 4
 
Страх и ненависть в Event Bus
Страх и ненависть в Event BusСтрах и ненависть в Event Bus
Страх и ненависть в Event Bus
 
Олег Годовых «Страх и ненависть в Event Bus»
Олег Годовых «Страх и ненависть в Event Bus»Олег Годовых «Страх и ненависть в Event Bus»
Олег Годовых «Страх и ненависть в Event Bus»
 
JavaScript Базовый. Занятие 08.
JavaScript Базовый. Занятие 08.JavaScript Базовый. Занятие 08.
JavaScript Базовый. Занятие 08.
 
JavaScript-библиотека
JavaScript-библиотекаJavaScript-библиотека
JavaScript-библиотека
 

More from Глеб Тарасов

Интуит. Разработка приложений для iOS. Лекция 11. Расширенные возможности уст...
Интуит. Разработка приложений для iOS. Лекция 11. Расширенные возможности уст...Интуит. Разработка приложений для iOS. Лекция 11. Расширенные возможности уст...
Интуит. Разработка приложений для iOS. Лекция 11. Расширенные возможности уст...Глеб Тарасов
 
Интуит. Разработка приложений для iOS. Лекция 10. Поддержка iPad
Интуит. Разработка приложений для iOS. Лекция 10. Поддержка iPadИнтуит. Разработка приложений для iOS. Лекция 10. Поддержка iPad
Интуит. Разработка приложений для iOS. Лекция 10. Поддержка iPadГлеб Тарасов
 
Интуит. Разработка приложений для iOS. Лекция 9. Нестандартный интерфейс
Интуит. Разработка приложений для iOS. Лекция 9. Нестандартный интерфейсИнтуит. Разработка приложений для iOS. Лекция 9. Нестандартный интерфейс
Интуит. Разработка приложений для iOS. Лекция 9. Нестандартный интерфейсГлеб Тарасов
 
Интуит. Разработка приложений для iOS. Лекция 7. Работа с сетью
Интуит. Разработка приложений для iOS. Лекция 7. Работа с сетьюИнтуит. Разработка приложений для iOS. Лекция 7. Работа с сетью
Интуит. Разработка приложений для iOS. Лекция 7. Работа с сетьюГлеб Тарасов
 
Интуит. Разработка приложений для iOS. Лекция 4. Controllers
Интуит. Разработка приложений для iOS. Лекция 4. ControllersИнтуит. Разработка приложений для iOS. Лекция 4. Controllers
Интуит. Разработка приложений для iOS. Лекция 4. ControllersГлеб Тарасов
 
Интуит. Разработка приложений для iOS. Лекция 3. Views
Интуит. Разработка приложений для iOS. Лекция 3. ViewsИнтуит. Разработка приложений для iOS. Лекция 3. Views
Интуит. Разработка приложений для iOS. Лекция 3. ViewsГлеб Тарасов
 
Интуит. Разработка приложений для iOS. Лекция 2. Objective-C
Интуит. Разработка приложений для iOS. Лекция 2. Objective-CИнтуит. Разработка приложений для iOS. Лекция 2. Objective-C
Интуит. Разработка приложений для iOS. Лекция 2. Objective-CГлеб Тарасов
 
Интуит. Разработка приложений для iOS. Лекция 1. Знакомство.
Интуит. Разработка приложений для iOS. Лекция 1. Знакомство.Интуит. Разработка приложений для iOS. Лекция 1. Знакомство.
Интуит. Разработка приложений для iOS. Лекция 1. Знакомство.Глеб Тарасов
 
Презентация проекта Ulect
Презентация проекта Ulect Презентация проекта Ulect
Презентация проекта Ulect Глеб Тарасов
 
Презентация для Foundation Institute
Презентация для Foundation InstituteПрезентация для Foundation Institute
Презентация для Foundation InstituteГлеб Тарасов
 
Делаем жизнь лучше с CocoaPods
Делаем жизнь лучше с CocoaPodsДелаем жизнь лучше с CocoaPods
Делаем жизнь лучше с CocoaPodsГлеб Тарасов
 
Школа-Студия разработки приложений для iOS. 5 лекция. Разное
Школа-Студия разработки приложений для iOS. 5 лекция. РазноеШкола-Студия разработки приложений для iOS. 5 лекция. Разное
Школа-Студия разработки приложений для iOS. 5 лекция. РазноеГлеб Тарасов
 
Школа-Студия разработки приложений для iOS. 3 лекция. Интерфейсы, прололжение
Школа-Студия разработки приложений для iOS. 3 лекция. Интерфейсы, прололжениеШкола-Студия разработки приложений для iOS. 3 лекция. Интерфейсы, прололжение
Школа-Студия разработки приложений для iOS. 3 лекция. Интерфейсы, прололжениеГлеб Тарасов
 
Школа-студия разработки приложений для iOS. 2 лекция. MVC, View, Controllers
Школа-студия разработки приложений для iOS. 2 лекция. MVC, View, ControllersШкола-студия разработки приложений для iOS. 2 лекция. MVC, View, Controllers
Школа-студия разработки приложений для iOS. 2 лекция. MVC, View, ControllersГлеб Тарасов
 
Школа-студия разработки приложений для iOS. Лекция 1. Objective-C
Школа-студия разработки приложений для iOS. Лекция 1. Objective-CШкола-студия разработки приложений для iOS. Лекция 1. Objective-C
Школа-студия разработки приложений для iOS. Лекция 1. Objective-CГлеб Тарасов
 
Глеб Тарасов. Портфолио
Глеб Тарасов. ПортфолиоГлеб Тарасов. Портфолио
Глеб Тарасов. ПортфолиоГлеб Тарасов
 
Курсы по мобильной разработке под iOS. 6 лекция. Инструменты
Курсы по мобильной разработке под iOS. 6 лекция. ИнструментыКурсы по мобильной разработке под iOS. 6 лекция. Инструменты
Курсы по мобильной разработке под iOS. 6 лекция. ИнструментыГлеб Тарасов
 

More from Глеб Тарасов (20)

Интуит. Разработка приложений для iOS. Лекция 11. Расширенные возможности уст...
Интуит. Разработка приложений для iOS. Лекция 11. Расширенные возможности уст...Интуит. Разработка приложений для iOS. Лекция 11. Расширенные возможности уст...
Интуит. Разработка приложений для iOS. Лекция 11. Расширенные возможности уст...
 
Интуит. Разработка приложений для iOS. Лекция 10. Поддержка iPad
Интуит. Разработка приложений для iOS. Лекция 10. Поддержка iPadИнтуит. Разработка приложений для iOS. Лекция 10. Поддержка iPad
Интуит. Разработка приложений для iOS. Лекция 10. Поддержка iPad
 
Интуит. Разработка приложений для iOS. Лекция 9. Нестандартный интерфейс
Интуит. Разработка приложений для iOS. Лекция 9. Нестандартный интерфейсИнтуит. Разработка приложений для iOS. Лекция 9. Нестандартный интерфейс
Интуит. Разработка приложений для iOS. Лекция 9. Нестандартный интерфейс
 
Интуит. Разработка приложений для iOS. Лекция 7. Работа с сетью
Интуит. Разработка приложений для iOS. Лекция 7. Работа с сетьюИнтуит. Разработка приложений для iOS. Лекция 7. Работа с сетью
Интуит. Разработка приложений для iOS. Лекция 7. Работа с сетью
 
Интуит. Разработка приложений для iOS. Лекция 4. Controllers
Интуит. Разработка приложений для iOS. Лекция 4. ControllersИнтуит. Разработка приложений для iOS. Лекция 4. Controllers
Интуит. Разработка приложений для iOS. Лекция 4. Controllers
 
Интуит. Разработка приложений для iOS. Лекция 3. Views
Интуит. Разработка приложений для iOS. Лекция 3. ViewsИнтуит. Разработка приложений для iOS. Лекция 3. Views
Интуит. Разработка приложений для iOS. Лекция 3. Views
 
Интуит. Разработка приложений для iOS. Лекция 2. Objective-C
Интуит. Разработка приложений для iOS. Лекция 2. Objective-CИнтуит. Разработка приложений для iOS. Лекция 2. Objective-C
Интуит. Разработка приложений для iOS. Лекция 2. Objective-C
 
Интуит. Разработка приложений для iOS. Лекция 1. Знакомство.
Интуит. Разработка приложений для iOS. Лекция 1. Знакомство.Интуит. Разработка приложений для iOS. Лекция 1. Знакомство.
Интуит. Разработка приложений для iOS. Лекция 1. Знакомство.
 
Презентация проекта Ulect
Презентация проекта Ulect Презентация проекта Ulect
Презентация проекта Ulect
 
Презентация для Foundation Institute
Презентация для Foundation InstituteПрезентация для Foundation Institute
Презентация для Foundation Institute
 
Делаем жизнь лучше с CocoaPods
Делаем жизнь лучше с CocoaPodsДелаем жизнь лучше с CocoaPods
Делаем жизнь лучше с CocoaPods
 
msumobi2. Лекция 2
msumobi2. Лекция 2msumobi2. Лекция 2
msumobi2. Лекция 2
 
msumobi2. Лекция 1
msumobi2. Лекция 1msumobi2. Лекция 1
msumobi2. Лекция 1
 
Школа-Студия разработки приложений для iOS. 5 лекция. Разное
Школа-Студия разработки приложений для iOS. 5 лекция. РазноеШкола-Студия разработки приложений для iOS. 5 лекция. Разное
Школа-Студия разработки приложений для iOS. 5 лекция. Разное
 
Школа-Студия разработки приложений для iOS. 3 лекция. Интерфейсы, прололжение
Школа-Студия разработки приложений для iOS. 3 лекция. Интерфейсы, прололжениеШкола-Студия разработки приложений для iOS. 3 лекция. Интерфейсы, прололжение
Школа-Студия разработки приложений для iOS. 3 лекция. Интерфейсы, прололжение
 
Школа-студия разработки приложений для iOS. 2 лекция. MVC, View, Controllers
Школа-студия разработки приложений для iOS. 2 лекция. MVC, View, ControllersШкола-студия разработки приложений для iOS. 2 лекция. MVC, View, Controllers
Школа-студия разработки приложений для iOS. 2 лекция. MVC, View, Controllers
 
Школа-студия разработки приложений для iOS. Лекция 1. Objective-C
Школа-студия разработки приложений для iOS. Лекция 1. Objective-CШкола-студия разработки приложений для iOS. Лекция 1. Objective-C
Школа-студия разработки приложений для iOS. Лекция 1. Objective-C
 
ShareKit. Evernote Dev Meetup
ShareKit. Evernote Dev MeetupShareKit. Evernote Dev Meetup
ShareKit. Evernote Dev Meetup
 
Глеб Тарасов. Портфолио
Глеб Тарасов. ПортфолиоГлеб Тарасов. Портфолио
Глеб Тарасов. Портфолио
 
Курсы по мобильной разработке под iOS. 6 лекция. Инструменты
Курсы по мобильной разработке под iOS. 6 лекция. ИнструментыКурсы по мобильной разработке под iOS. 6 лекция. Инструменты
Курсы по мобильной разработке под iOS. 6 лекция. Инструменты
 

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

  • 1. Разработка под iOS Лекция 5 Работа с данными Глеб Тарасов
  • 9. 10 000 магазинов сразу после установки программы
  • 10. Файлы (загружаются из сети или поставляются вместе с приложением) • Данные загружаются из сети в память и нигде не сохраняются • Данные загружаются из сети, кешируются на какое-то время • Данные загружаются из сети, сохраняются в базу данных • База данных поставляется вместе с приложением
  • 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. Папки Файл поставляется вместе с приложением NSString *path = [[NSBundle mainBundle] pathForResource:@"data" ofType:@"txt"]; Корневая папка bundle NSString *path = [[NSBundle mainBundle] bundlePath];
  • 14. Папки Папка Documents (для долгого хранения) NSString *path = [NSSearchPathForDirectoriesInDomains( NSDocumentsDirectory, NSUserDomainMask, YES) lastObject]; Папка Caches (для хранения кеша) NSString *path = [NSSearchPathForDirectoriesInDomains( NSCachesDirectory, NSUserDomainMask, YES) lastObject];
  • 17. GET http://site.ru/request.php?param1=test&param2=123 POST http://site.ru/request.php Тело запроса: <request query="load-courses"> <courses query="create"> <course id="100"/> <course id="312"/> </courses > < /request >
  • 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. JSON http://ru.wikipedia.org/wiki/ JSON { "firstName": "Иван", "lastName": "Иванов", "address": { "streetAddress": "Московское ш., 101, кв.101", "city": "Ленинград", "postalCode": 101101 }, "phoneNumbers": [ "812 123-1234", "916 123-4567" ] }
  • 20. REST http://ru.wikipedia.org/wiki/REST • Сервер не держит сессию с клиентом, не хранит состояние. • Каждый запрос от клиента содержит всю нужную информацию для ответа. • Запросы кешируемы •…
  • 21. Get-запрос NSURL *url = [NSURL URLWithString:@"http://site.ru/request.php?param=1"]; NSString *result = [NSString stringWithContentsOfURL:url encoding:NSUTF8StringEncoding error:nil];
  • 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. Серверная часть • Xостинг + скрипты на Python, PHP, Ruby. • Облако + скрипты (Google App Engine, Amazon EC, Microsoft Azure и т.д.) • Облачная NoSQL база без скриптов (Amazon SimpleDB, MongoDB и т.д.) • Сторонние сервисы
  • 24. Parse http://parse.com
  • 26. SQLite Встраиваемая база данных с поддержкой SQL-синтаксиса. • Работа напрямую через API на Си • Использование сторонних ORM на Objective-C • CoreData (ORM от Apple)