Вандад Нахавандипур - iOS. Приемы программирования

Здесь есть возможность читать онлайн «Вандад Нахавандипур - iOS. Приемы программирования» — ознакомительный отрывок электронной книги совершенно бесплатно, а после прочтения отрывка купить полную версию. В некоторых случаях можно слушать аудио, скачать через торрент в формате fb2 и присутствует краткое содержание. Город: Санкт-Петербург, Год выпуска: 2014, ISBN: 2014, Издательство: Питер, Жанр: Программирование, на русском языке. Описание произведения, (предисловие) а так же отзывы посетителей доступны на портале библиотеки ЛибКат.

iOS. Приемы программирования: краткое содержание, описание и аннотация

Предлагаем к чтению аннотацию, описание, краткое содержание или предисловие (зависит от того, что написал сам автор книги «iOS. Приемы программирования»). Если вы не нашли необходимую информацию о книге — напишите в комментариях, мы постараемся отыскать её.

Книга, которую вы держите в руках, представляет собой новый, полностью переписанный сборник приемов программирования по работе с iOS. Он поможет вам справиться с наболевшими проблемами, с которыми приходится сталкиваться при разработке приложений для iPhone, iPad и iPod Touch. Вы быстро освоите всю информацию, необходимую для начала работы с iOS 7 SDK, в частности познакомитесь с решениями для добавления в ваши приложения реалистичной физики или движений — в этом вам помогут API UIKit Dynamics.
Вы изучите новые многочисленные способы хранения и защиты данных, отправки и получения уведомлений, улучшения и анимации графики, управления файлами и каталогами, а также рассмотрите многие другие темы. При описании каждого приема программирования приводятся образцы кода, которые вы можете смело использовать.

iOS. Приемы программирования — читать онлайн ознакомительный отрывок

Ниже представлен текст книги, разбитый по страницам. Система сохранения места последней прочитанной страницы, позволяет с удобством читать онлайн бесплатно книгу «iOS. Приемы программирования», без необходимости каждый раз заново искать на чём Вы остановились. Поставьте закладку, и сможете в любой момент перейти на страницу, на которой закончили чтение.

Тёмная тема
Сбросить

Интервал:

Закладка:

Сделать

• NSString;

• NSDictionary;

• NSArray;

• NSData;

• NSNumber;

• NSDate.

Если вы попытаетесь вставить в массив какие-либо другие объекты, то ваши данные не будут сохранены на диске, поскольку этот метод первым делом проверяет, относятся ли все объекты в составе массива к одному из вышеупомянутых типов. Это делается по той простой причине, что в противном случае среда времени исполнения Objective-C просто не разберется, как сохранять данные на диске. Предположим, мы инстанцируем класс под названием Person, создаем для этого класса два свойства, одно из которых соответствует имени, другое — фамилии. Затем инстанцируем экземпляр этого класса и добавим его к массиву. Как же массив сможет сохранить эту информацию о персоне на диск? Никак, поскольку система не будет знать, что именно требуется сохранять. Эта проблема называется «маршалинг». В операционной системе iOS она решена только для перечисленных типов.

Словари также очень похожи на массивы. Сохранение их данных на диске и считывание информации из словаря происходит практически так же, как и в случае с массивами. Имена методов такие же, как и в предыдущем примере, правила сохранения словарей не отличаются от правил сохранения массивов. Вот пример:

NSString *filePath = [NSTemporaryDirectory()

stringByAppendingPathComponent:@"MyFile.txt"];

NSDictionary *dict = @{

@"first name": @"Steven",

@"middle name": @"Paul",

@"last name": @"Jobs",

};

if ([dict writeToFile: filePath atomically: YES]){

NSDictionary *readDictionary = [[NSDictionary alloc]

initWithContentsOfFile: filePath];

/* Теперь сравним словари и проверим, является ли словарь, считываемый

нами с диска, тем самым, который мы сохранили на диске */

if ([readDictionary isEqualToDictionary: dict]){

NSLog(@"The file we read is the same one as the one we saved.");

} else {

NSLog(@"Failed to read the dictionary from disk.");

}

} else {

NSLog(@"Failed to write the dictionary to disk.");

}

Как видите, в этом примере словарь записывается на диск, после чего считывается из этого самого места. После считывания мы сравниваем реальный словарь с тем, который сохранили на диске. Так мы должны убедиться, что оба словаря содержат одни и те же данные.

До сих пор мы применяли для сохранения содержимого на диске высокоуровневые классы, например NSString и NSArray. А что, если потребуется сохранить необработанный массив байтов? Это тоже делается просто. Предположим, у нас есть массив из четырех символов и его требуется сохранить на диск:

char bytes[4] = {'a', 'b', 'c', 'd'};

Чтобы сохранить этот необработанный массив байтов на диске простейшим способом, достаточно инкапсулировать его в другой высокоуровневой структуре данных, например NSData, а потом пользоваться соответствующими методами NSData для считывания данных с диска и записи их на диск. Методы сохранения и загрузки данных, применяемые в классе NSData, практически идентичны соответствующим методам классов NSArray и NSDictionary. Вот пример сохранения необработанных данных на диске и считывания их с диска:

NSString *filePath = [NSTemporaryDirectory()

stringByAppendingPathComponent:@"MyFile.txt"];

char bytes[4] = {'a', 'b', 'c', 'd'};

NSData *dataFromBytes = [[NSData alloc] initWithBytes: bytes

length: sizeof(bytes)];

if ([dataFromBytes writeToFile: filePath atomically: YES]){

NSData *readData = [[NSData alloc] initWithContentsOfFile: filePath];

if ([readData isEqualToData: dataFromBytes]){

NSLog(@"The data read is the same data as was written to disk.");

} else {

NSLog(@"Failed to read the data from disk.");

}

} else {

NSLog(@"Failed to save the data to disk.");

}

См. также

Раздел 12.0.

12.3. Создание каталогов на диске

Постановка задачи

Требуется возможность создавать на диске каталоги и сохранять в них определенные файлы из вашего приложения.

Решение

Пользуйтесь методом экземпляра createDirectoryAtPath: withIntermediateDirectories: attributes: error:, относящимся к классу NSFileManager, как показано далее:

— (BOOL) application:(UIApplication *)application

didFinishLaunchingWithOptions:(NSDictionary *)launchOptions{

NSFileManager *fileManager = [[NSFileManager alloc] init];

NSString *tempDir = NSTemporaryDirectory();

NSString *imagesDir = [tempDir stringByAppendingPathComponent:@"images"];

NSError *error = nil;

if ([fileManager createDirectoryAtPath: imagesDir

withIntermediateDirectories: YES

attributes: nil

error:&error]){

NSLog(@"Successfully created the directory.");

} else {

NSLog(@"Failed to create the directory. Error = %@", error);

}

self.window = [[UIWindow alloc]

initWithFrame: [[UIScreen mainScreen] bounds]];

self.window.backgroundColor = [UIColor whiteColor];

[self.window makeKeyAndVisible];

return YES;

}

Обсуждение

Читать дальше
Тёмная тема
Сбросить

Интервал:

Закладка:

Сделать

Похожие книги на «iOS. Приемы программирования»

Представляем Вашему вниманию похожие книги на «iOS. Приемы программирования» списком для выбора. Мы отобрали схожую по названию и смыслу литературу в надежде предоставить читателям больше вариантов отыскать новые, интересные, ещё непрочитанные произведения.


Отзывы о книге «iOS. Приемы программирования»

Обсуждение, отзывы о книге «iOS. Приемы программирования» и просто собственные мнения читателей. Оставьте ваши комментарии, напишите, что Вы думаете о произведении, его смысле или главных героях. Укажите что конкретно понравилось, а что нет, и почему Вы так считаете.

x