Чтение онлайн

на главную - закладки

Жанры

Программирование на Objective-C 2.0
Шрифт:

Вывод программы 15.13 ======== Contents of: Linda’s Address Book == Julia Kochan jewls337@axlc.com Tony lannino tony.iannino@techfitness.com Stephen Kochan steve@kochan-wood.com Jamie Baker jbaker@kochan-wood.com ==================================================== ======== Contents of: Linda’s Address Book == Jamie Baker jbaker@kochan-wood.com Julia Kochan jewls337@axlc.com Stephen Kochan steve@kochan-wood.com Tony lannino tony.iannino@techfitness.com

Отметим, ЧТО сортировка выполняется в порядке возрастания. Вы можете выполнить сортировку в порядке убывания, внеся изменения в метод compareNames: класса AddressCard, обратив смысл возвращаемых значений.

Для работы с объектами-массивами имеется более 50 методов. В таблицах 15.4 и 15.5 приводится список наиболее распространенных методов для работы с немутабельными и мутабельными массивами. NSMutableArray наследует методы класса NSArray, поскольку является его подклассом.

В таблицах 15.4 и 15.5 obj, objl и объявляются произвольными объектами; / — это значение типа NSUInteger, представляющее допустимый номер элемента в массиве, selector — это объект-селектор типа SEL, size имеет тип NSUInteger.

Табл. 15.4. Наиболее распространенные методы класса NSArray Метод Описание +(id) arrayWithObjects: obj1, obj2,... nil Создает новый массив с элементами obj1, obj2, ... -(BOOL) containsObject: obj Определяет, содержится ли objв массиве (используется метод isEqual:). -(NSUInteger) count Указывает число элементов в массиве. -(NSUInteger) indexOfObject: obj Определяет номер первого элемента, содержащего obj(используется метод isEqual:). -(id) objectAtlndex: i Указывает объект, хранящийся в элементе i. -(void) makeObjectsPerformSelector: (SEL) selector Передает каждому элементу массива сообщение, которое указывает selector. -(NSArray *) sortedArrayUsingSelector: (SEL) selector Сортирует массив в соответствии с методом сравнения, который указывает selector. -(BOOL) writeToFile: path automically: (BOOL) flag Записывает массив в указанный с помощью path файл, создавая сначала временный файл, если flag имеет значение YES.

Табл. 15.5. Наиболее распространенные методы класса NSMutableArray Метод Описание +(id) array Создает пустой массив. +(id) arrayWithCapacity: size Создает массив с указанным начальным размером. -(id) initWittiCapacity: size Инициализирует новый выделенный (alloc) массив с указанным начальным размером. -(void) addObject: obj Добавляет obj в конец массива. -(void) insertObject: obj atindex: i Выполняет вставку оbj в элемент i массива. -(void) replaceObjectAtlndex: i withObject: obj Заменяет объект в элементе i массива на obj. -(void) removeObject: obj Удаляет все экземпляры obj из массива. -(void) removeObjectAtlndex: i Удаляет элемент i из массива, смещая влево все элементы, начиная с i. -(void) sortUsingSelector: (SEL)selector Сортирует массив в соответствии с методом сравнения, который указывает selector. 15.4. Объекты-словари

Словарь (dictionary) — это коллекция данных, состоящая из пар ключ-объект. Как в обычном словаре, мы получаем из словаря Objective-C значение (объект) по его кп ючу. Ключи в словаре должны быть уникальными, и они могут быть объектом любого типа, хотя обычно это строки. Значение, соответствующее ключу, тоже может быть объектом любого типа, но не должно быть значение nil.

Словари могут быть мутабельными или немутабельными; в первом случае в них можно динамически добавлять и удалять записи. В словарях можно выполнять поиск по определенному' ключу, их содержимое можно делать перечислимым. В программе 15.14 создается словарь терминов Objective-C, и в нем заполняются первые три записи.

Для использования словарей нужно включить следующую строку. #import <Foundation/NSDictionary.h> #import <Foundation/NSObject.h> #import <Foundation/NSString.h> #import <Foundation/NSDictionary.h> #import <Foundation/NSAutoreleasePool.h> int main (int argc, char *argv[]) { NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init]; NSMutableDictionary *glossary = [NSMutableDictionary dictionary]; // Сохранение трех записей в этом словаре [glossary setOhject: @"A class defined so other classes can inherit from it" forKey: @"abstract class" ]; [glossary setObject: @'To implement all the methods defined in a protocol" forKey: @"adopt"]; [glossary setObject: @''Storing an object for later use" forKey: @"archiving"]; // Их считывание и вывод NSLog (@"abstract class: %@", [glossary objectForKey: @"abstract class"]); NSLog (@"adopt: %@\ [glossary objectForKey: @"adopt"]); NSLog (@"archiving: %@", [glossary objectForKey: @"archiving"]); [pool drain]; return 0; }

Вывод программы 15.14 abstract class: A class defined so other classes can inherit from it (абстрактный класс: класс, определенный таким образом, чтобы другие классы могли наследовать из него) adopt: То implement all the methods defined in a protocol (принять: для реализации всех методов, определенных в протоколе) archiving: Storing an object for later use (архивация: сохранение объекта для дальнейшего использования)

С помощью выражения [NSMutableDictionary dictionary]

создается пустой мутабельный словарь. Мы можем добавлять в этот словарь пары ключ-значение с помощью метода setObject:forKey:. После создания словаря мы можем считывать значение для заданного ключа с помощью метода objectForKey:. В программе 15.14 показано считывание и вывод этих трех записей. В более близком к практике приложении пользователь вводит слово, и программа вы-полняет поиск определения этого слова в словаре. Перечисление записей словаря

В программе 15.15 показано, как можно определить словарь с начальными парами «ключ-значение» с помощью метода dictionaryWithObjectsAndKeys:. Мы создадим немутабельный словарь и покажем, как применяется цикл с быстрым пе-речислением для считывания каждого элемента из словаря, по одному ключу за шаг. В отличие от объектов-массивов, объекты-словари не упорядочиваются, поэтому первая пара ключ-объект, помешенная в словарь, не обязательно будет первым ключом, извлекаемым при перечислении. #import < Foundation/NSObject. h> #import <Fnunriatinn/NSString.h> #import <Foundation/NSDictionary.h> #import <Foundation/NSAutoreleasePool.h> int main (int argc, char *argv[]) { NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init]; NSDictionary *glossary = [NSDictionary dictionaryWithObjectsAndKeys: @"A class defined so other classes can inherit from it", @"abstract class", @"To implement all the methods defined in a protocol", @"adopt", @"Storing an object for later use", @"archiving", nil ]; // Вывод всех пар ключ-значение из словаря for ( NSString *key in glossary) NSLog (@"%@%@\ key, (glossary objectForKey: key]); [pool drain]; return 0; }

Вывод программы 15.15 abstract class: A class defined so other classes can inherit from it adopt: To implement all the methods defined in a protocol archiving: Storing an object for later use

Аргументом для метода dictionaryWithObjectsAndKeys: является список пар объектключ (именно в этом порядке), разделяемых запятой. Этот список должен заканчиваться специальным объектом nil.

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

Мы только что показали некоторые базовые операции со словарями. В таб-лицах 15.6 и 15.7 приводятся наиболее распространенные методы для работы с немутабельными и мутабельными словарями. Поскольку NSMutableDictionary яв-ляется подмножеством IMSDictionary, он наследует его методы.

В таблицах 15.6 и 15.7 ключи и объекты key, keyl, кеу2, nhj, ohjl и ohj2 — про-извольные объекты, и size — целое без знака (unsigned int) типа NSUInteger.

Табл. 15.6. Наиболее распространенные методы класса NSDictionary Метод Описание– (NSArray *) keysSortedByValueUsingSelector: (SEL) selector Возвращает массив ключей из словаря, отсортированных в соответствии с методом сравнения, который указывает селектор selector. -(NSEnumerator *) objectEnumerator Возвращает объект класса NSEnumerator для всех значений из словаря -(id) objectForKey: key Возвращает объект для указанного ключа key.

Поделиться:
Популярные книги

Герой

Мазин Александр Владимирович
4. Варяг
Фантастика:
альтернативная история
9.10
рейтинг книги
Герой

Кодекс Охотника. Книга XXII

Винокуров Юрий
22. Кодекс Охотника
Фантастика:
фэнтези
попаданцы
5.00
рейтинг книги
Кодекс Охотника. Книга XXII

Светлая тьма. Советник

Шмаков Алексей Семенович
6. Светлая Тьма
Фантастика:
юмористическое фэнтези
городское фэнтези
аниме
сказочная фантастика
фэнтези
5.00
рейтинг книги
Светлая тьма. Советник

Законы Рода. Том 4

Мельник Андрей
4. Граф Берестьев
Фантастика:
юмористическое фэнтези
аниме
5.00
рейтинг книги
Законы Рода. Том 4

Я спас СССР! том 2

Вязовский Алексей
2. Я спас СССР
Фантастика:
альтернативная история
5.62
рейтинг книги
Я спас СССР! том 2

Рубежник

Билик Дмитрий Александрович
1. Бедовый
Фантастика:
юмористическая фантастика
городское фэнтези
мистика
5.00
рейтинг книги
Рубежник

Обрыв

Гончаров Иван Александрович
Проза:
классическая проза
русская классическая проза
8.93
рейтинг книги
Обрыв

Иной. Том 5. Адская работа

Amazerak
5. Иной в голове
Фантастика:
боевая фантастика
городское фэнтези
технофэнтези
рпг
5.00
рейтинг книги
Иной. Том 5. Адская работа

Неучтенный элемент. Том 8

NikL
8. Антимаг. Вне системы
Фантастика:
фэнтези
5.00
рейтинг книги
Неучтенный элемент. Том 8

В лапах зверя

Зайцева Мария
1. Звериные повадки Симоновых
Любовные романы:
остросюжетные любовные романы
эро литература
5.00
рейтинг книги
В лапах зверя

Тринадцатый XI

NikL
11. Видящий смерть
Фантастика:
попаданцы
аниме
фэнтези
фантастика: прочее
5.00
рейтинг книги
Тринадцатый XI

Старый, но крепкий

Крынов Макс
1. Культивация без насилия
Фантастика:
рпг
уся
попаданцы
5.00
рейтинг книги
Старый, но крепкий

Моров. Том 8

Кощеев Владимир
7. Моров
Фантастика:
альтернативная история
аниме
фэнтези
попаданцы
5.00
рейтинг книги
Моров. Том 8

Лекарь Империи 7

Карелин Сергей Витальевич
7. Лекарь Империи
Фантастика:
городское фэнтези
аниме
боевая фантастика
попаданцы
5.00
рейтинг книги
Лекарь Империи 7