Your SlideShare is downloading. ×
0
squeek school                          Разработка приложений для iOSсуббота, 21 мая 2011 г.
Хранение данных             • Xml (plist)             • SQLiteсуббота, 21 мая 2011 г.
Хранение данных                                                Property Lists       •      Property Lists - для небольшого...
Хранение данных                                  в настройках          [[NSUserDefaults standardUserDefaults] setObject: F...
песочницасуббота, 21 мая 2011 г.
а что внутри?                    Home Directory Layout                    • Each app has its own set of directories       ...
File Paths in Your Application              File Paths in Your Application               // Basic directories             ...
SQLite!                     • база в файле                     • нет сервера                     • простая реализация     ...
7 шагов                     • находим файл базы                     • подключаемся - sqlite3_open                     • со...
шаг 0 - создать БД          $ sqlite3 ex1          SQLite version 3.6.11          Enter ".help" for instructions          ...
подготовка         #import <sqlite3.h>   ! NSString *databaseName = @"Cocktails.sql";   ! NSArray *documentPaths = NSSearc...
чтение sqlite3 *database; ! if(sqlite3_open([databasePath UTF8String], &database) == SQLITE_OK) { ! ! const char *sqlState...
запись                     • просто sqlite3_step(compiledStatement),                          при удаче - SQLITE_DONEсуббо...
Сетевая активность приложения             • GET/POST запросы             • NSURLRequest и NSURLConnection             • За...
Google         Maps API          Facebook API                          Яндекс Карты                              API      ...
xml  <?xml version="1.0" encoding="UTF-8" ?>  <painting>   <img src="madonna.jpg" alt=Foligno Madonna, by  Raphael/>   <ca...
xml        ! NSURL *xmlURL = [NSURL URLWithString:URL];        ! NSXMLParser * rssParser = [[NSXMLParser alloc]        ini...
What does a JSON object look like?                                            json                  {                     ...
NSURLConnection      NSString *strUrl = [NSString stringWithString:@"http://prognozempatika.appspot.com/      prognoz?str=...
Upcoming SlideShare
Loading in...5
×

Squeek school #6

4,492

Published on

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

No Downloads
Views
Total Views
4,492
On Slideshare
0
From Embeds
0
Number of Embeds
1
Actions
Shares
0
Downloads
18
Comments
0
Likes
1
Embeds 0
No embeds

No notes for slide

Transcript of "Squeek school #6"

  1. 1. squeek school Разработка приложений для iOSсуббота, 21 мая 2011 г.
  2. 2. Хранение данных • Xml (plist) • SQLiteсуббота, 21 мая 2011 г.
  3. 3. Хранение данных Property Lists • Property Lists - для небольшого объема • Writing an Array to Disk хранит обычные форматы данных iOS NSArray *array = [NSArray arrayWithObjects:@“Foo”, [NSNumber numberWithBool:YES], [NSDate dateWithTimeIntervalSinceNow:60], nil]; [array writeToFile:@“MyArray.plist” atomically:YES]; NSArray * a = [NSArray arrayWithContentsOfFile:xmlFile]; <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> <plist version="1.0"> <array> <string>Foo</string> <true/> <date>2010-02-02T09:26:18Z</date> </array> </plist>суббота, 21 мая 2011 г.
  4. 4. Хранение данных в настройках [[NSUserDefaults standardUserDefaults] setObject: ForKey:]; [[NSUserDefaults standardUserDefaults] objectForKey:]; [[NSUserDefaults standardUserDefaults] synchonize];суббота, 21 мая 2011 г.
  5. 5. песочницасуббота, 21 мая 2011 г.
  6. 6. а что внутри? Home Directory Layout • Each app has its own set of directories я! • <Application Home> ельз MyApp.app ьн ят ■ ен ■ MyApp -м ■ MainWindow.nib ■ SomeImage.png ■ Documents - добавления здесь! ■ Library ■ Caches ■ Preferences • Applications only read and write within their home directory • Backed up by iTunes during sync (mostly)суббота, 21 мая 2011 г.
  7. 7. File Paths in Your Application File Paths in Your Application // Basic directories путь к документам NSString *homePath = NSHomeDirectory(); // Basic directories NSTemporaryDirectory(); NSString *tmpPath = NSString *homePath = NSHomeDirectory(); // Documents directory NSString *tmpPath = NSTemporaryDirectory(); NSArray *paths = NSSearchPathForDirectoriesInDomains (NSDocumentDirectory, NSUserDomainMask, YES); // Documents directory NSArray *paths = NSSearchPathForDirectoriesInDomains NSString *documentsPath = [paths objectAtIndex:0]; (NSDocumentDirectory, NSUserDomainMask, YES); NSString *documentsPath = [paths objectAtIndex:0]; // <Application Home>/Documents/foo.plist NSString *fooPath = // <Application stringByAppendingPathComponent:@“foo.plist”]; [documentsPath Home>/Documents/foo.plist NSString *fooPath = [documentsPath stringByAppendingPathComponent:@“foo.plist”]; Tuesday, February 2, 2010 1 Tuesday, February 2, 2010 16суббота, 21 мая 2011 г.
  8. 8. SQLite! • база в файле • нет сервера • простая реализация • включена в iPhoneсуббота, 21 мая 2011 г.
  9. 9. 7 шагов • находим файл базы • подключаемся - sqlite3_open • создаем запрос • готовим, проверяем - sqlite3_prepare_v2 • выполняем - sqlite3_step • завершаем - sqlite3_finalize • закрываем - sqlite3_closeсуббота, 21 мая 2011 г.
  10. 10. шаг 0 - создать БД $ sqlite3 ex1 SQLite version 3.6.11 Enter ".help" for instructions Enter SQL statements terminated with a ";" sqlite> create table tbl1(one varchar(10), two smallint); sqlite> insert into tbl1 values(hello!,10); sqlite> insert into tbl1 values(goodbye, 20); sqlite> select * from tbl1; hello!|10 goodbye|20 sqlite> CREATE TABLE Person (  id integer unique not null,  first_name char(20),  last_name char(20),  address char(100),  email char(30),  telephone char(15),  birth_date int );суббота, 21 мая 2011 г.
  11. 11. подготовка #import <sqlite3.h> ! NSString *databaseName = @"Cocktails.sql"; ! NSArray *documentPaths = NSSearchPathForDirectoriesInDomains (NSDocumentDirectory, NSUserDomainMask, YES); ! NSString *documentsDir = [documentPaths objectAtIndex:0]; ! NSString *databasePath = [documentsDir stringByAppendingPathComponent:databaseName]; ! BOOL success; ! NSFileManager *fileManager = [NSFileManager defaultManager]; ! success = [fileManager fileExistsAtPath:databasePath]; ! if(!success) { ! NSString *databasePathFromApp = [[[NSBundle mainBundle] resourcePath] stringByAppendingPathComponent:databaseName]; ! [fileManager copyItemAtPath:databasePathFromApp toPath:databasePath error:nil]; ! [fileManager release]; ! } !суббота, 21 мая 2011 г.
  12. 12. чтение sqlite3 *database; ! if(sqlite3_open([databasePath UTF8String], &database) == SQLITE_OK) { ! ! const char *sqlStatement = "select * from cocktail;"; ! ! sqlite3_stmt *compiledStatement; ! ! if(sqlite3_prepare_v2(database, sqlStatement, -1, &compiledStatement, NULL) == SQLITE_OK) { ! ! ! while(sqlite3_step(compiledStatement) == SQLITE_ROW) { ! ! ! ! int anId = sqlite3_column_int(compiledStatement, 0); ! ! ! ! NSString *aName = [NSString stringWithUTF8String:(char *) sqlite3_column_text(compiledStatement, 1)]; //... ! ! ! } ! ! } ! ! sqlite3_finalize(compiledStatement); ! } ! sqlite3_close(database);суббота, 21 мая 2011 г.
  13. 13. запись • просто sqlite3_step(compiledStatement), при удаче - SQLITE_DONEсуббота, 21 мая 2011 г.
  14. 14. Сетевая активность приложения • GET/POST запросы • NSURLRequest и NSURLConnection • Защищенное соединение • Парсинг xml • Работа с публичными APIсуббота, 21 мая 2011 г.
  15. 15. Google Maps API Facebook API Яндекс Карты API Twitter API общение с вашим серверомсуббота, 21 мая 2011 г.
  16. 16. xml <?xml version="1.0" encoding="UTF-8" ?> <painting> <img src="madonna.jpg" alt=Foligno Madonna, by Raphael/> <caption>This is Raphaels "Foligno" Madonna, painted in <date>1511</date>–<date>1512</date>. </caption> </painting>суббота, 21 мая 2011 г.
  17. 17. xml ! NSURL *xmlURL = [NSURL URLWithString:URL]; ! NSXMLParser * rssParser = [[NSXMLParser alloc] initWithContentsOfURL:xmlURL]; ! [rssParser setDelegate:self]; ! [rssParser parse]; NSXMLParserDelegate: - (void)parser:(NSXMLParser *)parser parseErrorOccurred:(NSError *) parseError - (void)parser:(NSXMLParser *)parser didStartElement:(NSString *) elementName namespaceURI:(NSString *)namespaceURI qualifiedName: (NSString *)qName attributes:(NSDictionary *)attributeDict - (void)parser:(NSXMLParser *)parser didEndElement:(NSString *) elementName namespaceURI:(NSString *)namespaceURI qualifiedName: (NSString *)qName - (void)parser:(NSXMLParser *)parser foundCharacters:(NSString *) string - (void)parserDidEndDocument:(NSXMLParser *)parser {суббота, 21 мая 2011 г.
  18. 18. What does a JSON object look like? json { “instructor” : “Josh Shaffer”, “students” : 60, “itunes-u” : true, “midterm-exam” : null, “assignments” : [ “WhatATool”, “HelloPoly”, “Presence” ] } • NSDictionary *result = [jsonString JSONValue];y, February 2, 2010 41 суббота, 21 мая 2011 г.
  19. 19. NSURLConnection NSString *strUrl = [NSString stringWithString:@"http://prognozempatika.appspot.com/ prognoz?str=Hello, World!"]; NSString *escapedString = [strUrl stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]; NSURL *url = [ NSURL URLWithString: @"http://www.yourwebsite.com/image.png" ]; NSURLRequest *request = [ [ NSURLRequest alloc ] initWithURL: url cachePolicy: NSURLRequestReturnCacheDataElseLoad timeoutInterval: 60.0 ]; NSMutableData *data = [ [ NSMutableData data ] retain ]; NSURLConnection * connection = [ [ NSURLConnection alloc ] initWithRequest: request delegate: self ]; -(void)connection:(NSURLConnection *)connection didReceiveResponse: (NSURLResponse *)response { [ data setLength: 0 ]; } -(void)connection:(NSURLConnection *)connection didReceiveData: (NSData *)incomingData { [ data appendData: incomingData ]; } -(void)connectionDidFinishLoading:(NSURLConnection *)connection { NSLog(@"w00t! my image is finished loading!"); NSString *string = [ [ NSString alloc ] initWithData: data encoding:NSUTF8StringEncoding ]; [ data release ]; }суббота, 21 мая 2011 г.
  1. A particular slide catching your eye?

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

×