Главная » iPhone, Objective-C, Программирование для iOS и MacOS » Списки свойств Objective-C

0

Иногда требуется создать файл в формате, удобном как для компьютеров, так и для людей. Допустим, вы хотите сохранить в файле описание своего портфеля акций. Добавление новых акций было бы удобно осуществлять вручную, но также было бы хорошо, чтобы содержимое файла нормально читалось вашими программами. Для решения подобных проблем многие программисты Objective-С используют списки свойств.

Список свойств представляет собой комбинацию следующих элементов:

• NSArray

• NSOictionary

• NSString

• NSOata

• NSOate

• NSNumber (целое, вещественное или логическое значение)

Например, массив словарей со строковыми ключами и объектами даты представляет собой список свойств.

Операции чтения и записи списка свойств в файл очень просты. В Xcode создайте новый проект: программу командной строки Foundation с именем stockz. Включите в нее следующий код:

#import <Foundation/Foundation.h>

int main(int argc, const char * argv[])

{

@autoreleasepool {

NSMutableArray *stocks = [[NSMutableArray alloc] init]; NSMutableDictionary *stock;

stock = [NSMutableDictionary dictionary]; [stock setObject:@"AAPL"

forKey:@"symbol"];

[stock setObject:[NSNumber numberWithInt:200]

forKey:@"shares"]; [stocks addObject:stock];

stock = [NSMutableDictionary dictionary]; [stock setObject:@"GOOG"

forKey:@"symbol"];

[stock setObject:[NSNumber numberWithInt:160] forKey:@"shares"];

[stocks addObject:stock];

[stocks writeToFile:@"/tmp/stocks.plist" atomically:YES];

}

return 0;

}

(Обратите внимание на повторное использование указателя stock. Сначала он указывает на первый словарь, а потом на второй.)

Рис. 26.1. Массив словарей

Запущенная  программа  создает  файл  stocks.plist.  Открыв  его  в  текстовом редакторе, вы увидите примерно следующее:

<?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>

<dict>

<key>shares</key>

<integer>200</integer>

<key>symbol</key>

<string>AAPL</string>

</dict>

<dict>

<key>shares</key>

<integer>160</integer>

<key>symbol</key>

<string>GOOG</string>

</dict>

</array>

</plist>

Неплохо, верно? XML. Хорошо читается. И всего одна строка кода.

Если вам придется создавать списки свойств вручную, учтите, что в Xcode для работы со списками свойств имеется специальный встроенный редактор.

Теперь добавьте строку для чтения файла:

int main(int argc, const char * argv[])

{

@autoreleasepool {

NSMutableArray *stocks = [[NSMutableArray alloc] init]; NSMutableDictionary *stock;

stock = [NSMutableDictionary dictionary]; [stock setObject:@"AAPL"

forKey:@"symbol"];

[stock setObject:[NSNumber numberWithInt:200] forKey:@"shares"];

[stocks addObject:stock];

stock = [NSMutableDictionary dictionary]; [stock setObject:@"GOOG"

forKey:@"symbol"];

[stock setObject:[NSNumber numberWithInt:160] forKey:@"shares"];

[stocks addObject:stock];

[stocks writeToFile:@"/tmp/stocks.plist" atomically:YES];

NSArray *stockList = [NSArray arrayWithContentsOfFile:@"/tmp/ stocks.plist"];

for (NSDictionary *d in stockList) { NSLog(@"I have %@ shares of %@",

[d objectForKey:@"shares"], [d objectForKey:@"symbol"]);

}

}

return 0;

}

Постройте и запустите программу

Упражнение

Напишите программу для создания списка свойств, содержащего все 8 типов: массив, словарь, строка, данные, дата, целое число, вещественное число, логическое значение.

Источник: Аарон Хилегас, «Objective-C. Программирование для iOS и MacOS», 2012 г.

По теме:

  • Комментарии