iOS. Приемы программирования - страница 23

Шрифт
Интервал


>NSLog(@"Immutable array = %@", immutableArray);

>NSLog(@"Mutable Array = %@", mutableArray);

>Вывод этой программы таков:

>Immutable array = (

>"String 1",

>"String 2",

>"String 3"

>)

>Mutable Array = (

>"String 1",

>"String 3"

>)


Еще одна распространенная коллекция, которая часто встречается в программах для iOS, – это словарь. Словари похожи на массивы, но каждому объекту в словаре присваивается ключ, и по этому ключу вы можете позже получить интересующий вас объект. Рассмотрим пример:


>NSDictionary *personInformation =

>@{

>@"firstName": @"Mark",

>@"lastName": @"Tremonti",

>@"age": @30,

>@"sex": @"Male"

>};


>NSString *firstName = personInformation[@"firstName"];

>NSString *lastName = personInformation[@"lastName"];

>NSNumber *age = personInformation[@"age"];

>NSString *sex = personInformation[@"sex"];


>NSLog(@"Full name = %@ %@", firstName, lastName);

>NSLog(@"Age = %@, Sex = %@", age, sex);

>А вот и вывод этой программы:

>Full name = Mark Tremonti

>Age = 30, Sex = Male


Можно также использовать изменяемые словари, которые довольно сильно похожи на изменяемые массивы. Содержимое изменяемого словаря можно изменить после того, как словарь инстанцирован. Пример:


>NSDictionary *personInformation =

>@{

>@"firstName": @"Mark",

>@"lastName": @"Tremonti",

>@"age": @30,

>@"sex": @"Male"

>};


>NSMutableDictionary *mutablePersonInformation =

>[[NSMutableDictionary alloc] initWithDictionary: personInformation];

>mutablePersonInformation[@"age"] = @32;


>NSLog(@"Information = %@", mutablePersonInformation);

>Вывод этой программы таков:

>Information = {

>age = 32;

>firstName = Mark;

>lastName = Tremonti;

>sex = Male;

>}


Еще можно работать с множествами. Множества похожи на массивы, но любой объект, входящий в состав множества, должен встречаться в нем только один раз. Иными словами, в одном множестве не может быть двух экземпляров одного и того же объекта. Пример множества:


>NSSet *shoppingList = [[NSSet alloc] initWithObjects:

>@"Milk",

>@"Bananas",

>@"Bread",

>@"Milk", nil];


>NSLog(@"Shopping list = %@", shoppingList);

>Запустив эту программу, вы получите следующий вывод:

>Shopping list = {(

>Milk,

>Bananas,

>Bread

>)}


Обратите внимание: элемент Milk упомянут в программе дважды, а в множество добавлен всего один раз. Эта черта множеств – настоящее волшебство. Изменяемые множества можно использовать и вот так:


>NSSet *shoppingList = [[NSSet alloc] initWithObjects: