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

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

Жанры

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

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

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

Добавьте метод removeName:

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

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

Используя класс Fraction, определенный в части I, создайте мутабельный мас-сив дробей (fraction) с произвольными значениями. Затем отсортируйте этот массив с помощью метода sortUsingSelector: из класса NSMutableArray. Добавьте в класс Fraction категорию Comparison (сравнение) и реализуйте свой метод сравнения в этой категории.

Определите три новых класса с именами Song, PlayList и MusicCollection. Объект класса Song должен содержать информацию об определенной песне, например, ее название (title), исполнителя (artist), альбом (album) и время воспроизведения (playing time). Объект класса PlayList должен содержать имя списка воспроизведения и коллекцию песен. Объект класса MusicCollection должен содержать коллекцию списков воспроизведения, включая специальный мастер-список с именем library (библиотека), который содержит все песни этой коллекции. Определите эти три класса и напишите методы, чтобы выполнять следующее.

Создавать объект класса Song и задавать его информацию.

Создавать объект класса Playlist и добавлять или удалять песни из списка воспроизведения. Новая песня должна добавляться в мастер-список, если ее еще там нет. При удалении песни из мастер-списка она должна удаляться из всех списков воспроизведения этой музыкальной коллекции.

Создавать объект класса MusicCollection и добавлять в него или удалять из него объекты класса Playlist (списки воспроизведения)

Выполнять поиск и вывод информации о любой песне, любом списке воспроизведения или всей музыкальной коллекции. Проследите, чтобы во всех классах не было утечки памяти!

Напишите программу, которая создает из массива объектов типа NSInteger гистограмму, где показано каждое целое значение вместе с числом экземп-ляров этого значения (частотой появления) в массиве. Для создания счетчиков экземпляров используйте объект NSCountedSet.

Глава 16. Работа с файлами

Foundation framework позволяет получать доступ к файловой системе для вы-полнения основных операций с файлами и папками (каталогами) с помощью NSFileManager, методы которого позволяют выполнять следующие операции.

Создание нового файла.

Чтение из существующего файла.

Запись данных в файл.

Переименование файла.

Удаление файла.

Проверка существования файла.

Определение размера файла, а также других атрибутов.

Создание копии файла.

Проверка двух файлов на совпадение содержимого.

Многие из этих операций можно также

выполнять с папками. Например, можно создать папку, прочитать ее содержимое или удалить се. Еще одна возможность — это возможность привязки (link) файлов. Привязка означает, что один и тот же файл может существовать под двумя именами и даже в двух различных папках.

Чтобы открыть файл и выполнить с этим файлом несколько операций чте-ния-записи, используются методы из NSFileHandle. Методы этого класса позво-ляют следующее.

Открывать файл для чтения, записи или изменения (update — чтение и запись).

Искать указанное местоположение в файле.

Считывать или записывать заданное число байтов из файла или в файл. Методы из NSFileHandle можно также применять к устройствами (сокетам). В этой главе мы будем работать только с обычными файлами. 16.1. Управление файлами и папками: NSFileManager

Файл или папка уникально указывается для NSFileManager с помощью имени пути доступа к файлу (pathname). Имя пути — это объект класса NSString, который может представлять относительное или полное имя пути. Относительное имя пути определяется относительно текущей папки. Например, имя файла copyl.m означает, что файл copyl.m находится в текущей папке. Символы «слэш» являются разделителями папок в указанном пути. Имя файла ch16/copy1.m тоже является относительным именем пути, указывая файл copyl .m, хранящийся в папке chi6, которая содержится в текущей папке.

Полные имена пути, которые также называют абсолютными именами пути, начинаются с ведущего слэша (/). Слэш на самом деле представляет папку, ко-торая называется корневой (root) папкой. На моем Мае полное имя пути к моей домашней папке — /Users/stevekochan. Этот путь представляет три папки: / (корне-вая папка), Users и stevekochan.

Специальный символ «тильда» (~) используется как сокращенное представ-ление домашней папки пользователя. Так, -linda — это сокращение для домашней папки пользователя linda, которая может быть представлена в виде пути / Users/linda. Отдельный символ «тильда» указывает домашнюю папку текущего пользователя, путь -/copyl.m означает ссылку на файл copyl.m, хранящийся в до-машней папке текущего пользователя. Другие специальные символы для пути в стиле UNIX, такие как точка (.) для текущей папки и .. для родительской папки, следует удалять из имен пути при работе с файлами в методах Foundation. Для этого можно использовать разнообразные утилиты, которые будут рассмат-риваться ниже в этой главе.

Избегайте фиксированных путей в своих программах. Как будет описано далее, имеются функции и методы, которые позволяют получать имя пути для текущей папки, домашней папки пользователя и папки для создания временных файлов. Обращайтесь к ним, насколько это возможно. Ниже мы покажем, что Foundation содержит функцию для получения списка специальных папок, таких как папки пользователя Documents.

В таблице 16.1 приводится сводка основных методов NSFileManager для работы с файлами. В этой таблице path (путь), path}, palh2,from (из) и !о (куда) — объекты класса NSString, attr (атрибут) - объект NSDictionary, handler - обработчик (хендлср) обратного вызова, который вы можете предоставлять для обработки ошибок. Если указать nil для handler, то выполняется действие по умолчанию. Для методов, возвращающих значение типа BOOL, это YES при успешном завершении операции и N0, если операцию не удалось выполнить. В этой главе не товорится о том, как писать хендлеры.

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

Барон запрещает правила

Ренгач Евгений
9. Закон сильного
Фантастика:
аниме
фэнтези
попаданцы
5.00
рейтинг книги
Барон запрещает правила

Имперец. Том 4

Романов Михаил Яковлевич
3. Имперец
Фантастика:
попаданцы
альтернативная история
аниме
5.00
рейтинг книги
Имперец. Том 4

Возмутитель спокойствия

Владимиров Денис
1. Глэрд
Фантастика:
фэнтези
боевая фантастика
попаданцы
5.00
рейтинг книги
Возмутитель спокойствия

Вперед в прошлое 11

Ратманов Денис
11. Вперед в прошлое
Фантастика:
попаданцы
альтернативная история
5.00
рейтинг книги
Вперед в прошлое 11

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

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

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

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

Князь Андер Арес 5

Грехов Тимофей
5. Андер Арес
Фантастика:
историческое фэнтези
фэнтези
героическая фантастика
5.00
рейтинг книги
Князь Андер Арес 5

Первый среди равных. Книга VI

Бор Жорж
6. Первый среди Равных
Фантастика:
аниме
фэнтези
попаданцы
5.00
рейтинг книги
Первый среди равных. Книга VI

Бастард Императора. Том 15

Орлов Андрей Юрьевич
15. Бастард Императора
Фантастика:
городское фэнтези
аниме
фэнтези
фантастика: прочее
попаданцы
5.00
рейтинг книги
Бастард Императора. Том 15

Наследие Маозари 2

Панежин Евгений
2. Наследие Маозари
Фантастика:
попаданцы
рпг
аниме
5.00
рейтинг книги
Наследие Маозари 2

Довлатов. Сонный лекарь

Голд Джон
1. Не вывожу
Фантастика:
альтернативная история
аниме
5.00
рейтинг книги
Довлатов. Сонный лекарь

Господин Хладов

Шелег Дмитрий Витальевич
4. Кровь и лёд
Фантастика:
аниме
5.00
рейтинг книги
Господин Хладов

Идеальный мир для Лекаря 13

Сапфир Олег
13. Лекарь
Фантастика:
фэнтези
юмористическое фэнтези
аниме
5.00
рейтинг книги
Идеальный мир для Лекаря 13

Матабар IV

Клеванский Кирилл Сергеевич
4. Матабар
Фантастика:
фэнтези
5.00
рейтинг книги
Матабар IV