Вход/Регистрация
Программирование на Objective-C 2.0
вернуться

Кочан Стивен

Шрифт:

Затем в программе используются методы addObject: и removeObject:, чтобы добавить 4 и удалить 10 из setl. Вывод содержимого этого набора показывает, что операции выполнены успешно.

Методы intersect: и union: используются, чтобы вычислять пересечение и объединение двух наборов. В обоих случаях результат операции заменяет получателя сообщения.

В Foundation framework имеется также класс NSCountedSet. Наборы могут содержать более одного экземпляра одного и того же объекта, однако вместо не-скольких представлений этого объекта в наборе поддерживается счетчик эк-земпляров. При первом добавлении объекта в набор его счетчик равен 1. При последующем добавлении этого объекта в набор происходит наращивание его счетчика, а при удалении объекта счетчик уменьшается на 1. Когда счетчик ста-новится равным 0, объект удаляется из набора. Метод countForObject: читает счет-чик для указанного объекта в наборе.

Наборы со счетчиками могут применяться, например, в приложении для подсчета количества слов. При каждом обнаружении слова в некотором тексте его можно добавить в набор со счетчиками. По окончании просмотра текста можно читать слово из набора вместе с его счетчиком, показывающим, сколько раз данное слово встречается в этом тексте.

Мы только что показали некоторые основные операции с наборами. В таб-лицах 15.8 и 15.9 приводятся наиболее распространенные методы для работы с мутабельными и немутабсльными наборами. Поскольку NSMutableSet является подклассом класса NSSet, он наследует его методы.

В таблицах 15.8 и 15.9 obj, objt и obj2являются произвольными объектами, nsset — это объект класса NSSet или NSMutableSet, size — целый элемент типа NSUInteger.

Табл. 15.8. Наиболее распространенные методы класса NSSet Метод Описание +(id) setWithObjects: obj1, obj2, ..., nil Создает новый набор из списка объектов. -(id) imtWithObjects: obj1, obj2, ..., nil Инициализирует новый выделенный (alloc) набор со списком объектов. -(NSUInteger) count Возвращает число членов данного набора. -(BOOL) containsObject: obj Определяет, содержится ли obj в данном наборе. -(BOOL) member: obj Определяет, содержится ли оbj в данном наборе (с использованием метода isEqual:). -(NSEnumerator *) objectEnumerator Возвращает объект класса NSEnumerator для всех объектов набора. -(BOOL) isSubsetOfSet: nsset Определяет, содержится ли каждый член получателя в nsset. -(BOOL) intersectsSet: nsset Определяет, содержится ли хотя бы один член получателя в nsset. -(BOOL) isEqualToSet: nsset Проверяет равенство двух наборов.

Табл. 15.9. Наиболее распространенные методы класса NSMutableSet Метод Описание– (id) setWithCapacity: size Создает новый набор с начальной емкостью для хранения size членов. -(id) initWithCapacity: size Задает начальную емкость нового выделенного (alloc) набора для size членов. -(void) addObject: obj Добавляет obj в набор. -(void) removeObject: obj Удаляет obj из набора. -(void) removeAllObjects Удаляет всех членов набора-получателя. -(void) unionSet: nsset Добавляет каждого члена nsset в набор-получатель. -(void) minusSet: nsset Удаляет всех членов nsset из набора-получателя. -(void) intersectSet: nsset Удаляет из набора-получателя всех членов, не входящих в nsset. Упражнения

Найдите класс NSCalendarDate в своей документации. Добавьте в NSCalendarOate новую категорию с именем BapsedDays. В этой категории добавьте метод в соответствии со следующим объявлением этого метода.
– (unsigned long) numberOfEiapsedDays: (NSCalendarDate *} theDate; Этот метод должен возвращать число дней (elapsed days), прошедших между датой получателя и датой аргумента. Напишите тестовую пробам му для проверки этого метода. (Подсказка: посмотрите метод years:months:days:hours:minutes:seconds:sinceDate:.)

Внесите изменения в метод lookup:, разработанный в этой главе для класса AddressBook, чтобы можно было проверять частичное совпадение с именем. Выражение с сообщением | my Book lookup: @»steve»] должно определять соответствие записи, содержащей строку Steve в любой части имени.

Внесите изменения в метод lookup:, разработанный в этой главе для класса AddressBook, чтобы можно было искать все соответствия в адресной книге. Этот метод должен возвращать массив, содержащий все соответствующие адресные, карточки, или nil, если не найдено ни одного соответствия.

Добавьте новые поля по вашему выбору в класс AddressCard. Например, вы можете разделить поле name на поля имени и фамилии, а также добавить адрес (с полями штата, города, почтового кода и страны) и номер телефона. Напишите метод-установщик и метод-получатель, а также проследите, чтобы методы print и list правильно выводили поля.

После завершения упражнения 3 внесите изменения в метод lookup: из уп-ражнения 2, чтобы выполнять поиск по всем полям адресной карточки. Как вы спроектировал и бы свои классы AddressCard и AddressBook, чтобы в AddressBook не нужно было знать все поля, хранящиеся в AddressCard?

Добавьте метод removeName: в класс AddressBook, чтобы удалять запись адресной книги в соответствии со следующим объявлением этого метода. -(BOOL) removeName: (NSString *) theName; Используйте метод lookup:, разработанный в упражнении 2. Если имя не най-дено или существует несколько записей, метод должен возвращать значение N0. Если запись успешно удалена, метод должен возвращать значение YES.

Используя класс Fraction, определенный в части 1, создайте массив дробей (fraction) с некоторыми произвольными значениями. Затем напишите код для вычисления суммы всех дробей, хранящихся в этом массиве.

  • Читать дальше
  • 1
  • ...
  • 94
  • 95
  • 96
  • 97
  • 98
  • 99
  • 100
  • 101
  • 102
  • 103
  • 104
  • ...

Ебукер (ebooker) – онлайн-библиотека на русском языке. Книги доступны онлайн, без утомительной регистрации. Огромный выбор и удобный дизайн, позволяющий читать без проблем. Добавляйте сайт в закладки! Все произведения загружаются пользователями: если считаете, что ваши авторские права нарушены – используйте форму обратной связи.

Полезные ссылки

  • Моя полка

Контакты

  • chitat.ebooker@gmail.com

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