1. squeek school
Разработка приложений для iOS
суббота, 21 мая 2011 г.
2. Хранение данных
• Xml (plist)
• SQLite
суббота, 21 мая 2011 г.
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. Хранение данных
в настройках
[[NSUserDefaults standardUserDefaults] setObject: ForKey:];
[[NSUserDefaults standardUserDefaults] objectForKey:];
[[NSUserDefaults standardUserDefaults] synchonize];
суббота, 21 мая 2011 г.
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. 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. SQLite!
• база в файле
• нет сервера
• простая реализация
• включена в iPhone
суббота, 21 мая 2011 г.
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 г.
13. запись
• просто sqlite3_step(compiledStatement),
при удаче - SQLITE_DONE
суббота, 21 мая 2011 г.
14. Сетевая активность приложения
• GET/POST запросы
• NSURLRequest и NSURLConnection
• Защищенное соединение
• Парсинг xml
• Работа с публичными API
суббота, 21 мая 2011 г.
15. Google
Maps API Facebook API
Яндекс Карты
API
Twitter API общение с
вашим сервером
суббота, 21 мая 2011 г.
16. xml
<?xml version="1.0" encoding="UTF-8" ?>
<painting>
<img src="madonna.jpg" alt='Foligno Madonna, by
Raphael'/>
<caption>This is Raphael's "Foligno" Madonna, painted in
<date>1511</date>–<date>1512</date>.
</caption>
</painting>
суббота, 21 мая 2011 г.