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

Тут можно читать онлайн Вандад Нахавандипур - iOS. Приемы программирования - бесплатно ознакомительный отрывок. Жанр: comp-programming, издательство Питер, год 2014. Здесь Вы можете читать ознакомительный отрывок из книги онлайн без регистрации и SMS на сайте лучшей интернет библиотеки ЛибКинг или прочесть краткое содержание (суть), предисловие и аннотацию. Так же сможете купить и скачать торрент в электронном формате fb2, найти и слушать аудиокнигу на русском языке или узнать сколько частей в серии и всего страниц в публикации. Читателям доступно смотреть обложку, картинки, описание и отзывы (комментарии) о произведении.
  • Название:
    iOS. Приемы программирования
  • Автор:
  • Жанр:
  • Издательство:
    Питер
  • Год:
    2014
  • Город:
    Санкт-Петербург
  • ISBN:
    978-5-496-01016-0
  • Рейтинг:
    3.9/5. Голосов: 101
  • Избранное:
    Добавить в избранное
  • Отзывы:
  • Ваша оценка:
    • 80
    • 1
    • 2
    • 3
    • 4
    • 5

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

iOS. Приемы программирования - описание и краткое содержание, автор Вандад Нахавандипур, читайте бесплатно онлайн на сайте электронной библиотеки LibKing.Ru

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

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

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

iOS. Приемы программирования - читать книгу онлайн бесплатно (ознакомительный отрывок), автор Вандад Нахавандипур
Тёмная тема
Сбросить

Интервал:

Закладка:

Сделать

— (BOOL) writeText:(NSString *)paramText toPath:(NSString *)paramPath{

return [paramText writeToFile: paramPath

atomically: YES

encoding: NSUTF8StringEncoding

error: nil];

}

— (NSString *) readTextFromPath:(NSString *)paramPath{

return [[NSString alloc] initWithContentsOfFile: paramPath

encoding: NSUTF8StringEncoding

error: nil];

}

— (BOOL) application:(UIApplication *)application

didFinishLaunchingWithOptions:(NSDictionary *)launchOptions{

NSString *filePath = [NSTemporaryDirectory()

stringByAppendingPathComponent:@"MyFile.txt"];

if ([self writeText:@"Hello, World!" toPath: filePath]){

NSString *readText = [self readTextFromPath: filePath];

if ([readText length] > 0){

NSLog(@"Text read from disk = %@", readText);

} else {

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

}

} else {

NSLog(@"Failed to write the file.");

}

self.window = [[UIWindow alloc]

initWithFrame: [[UIScreen mainScreen] bounds]];

self.window.backgroundColor = [UIColor whiteColor];

[self.window makeKeyAndVisible];

return YES;

}

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

Если вы хотите работать с URL, инкапсулированными в экземпляры NSURL (или в экземпляры изменяемой версии этого класса), используйте в данном случае метод экземпляра writeToURL: atomically: encoding: error:.

Экземпляры NSURL могут указывать на ресурсы (файлы, каталоги и т. д.), расположенные в локальной системе или на удаленных устройствах. Так, экземпляр NSURL может представлять локальный файл в каталоге Documents (Документы) в вашем приложении, а другой NSURL — соответствовать URL сайта www.apple.com. Этот класс просто предоставляет вам функции, необходимые для доступа к URL и для работы с ними, независимо от типа конкретного URL.

Другие основополагающие классы обладают примерно такими же методами, как и NSString. Возьмем, к примеру, NSArray. Чтобы сохранить содержимое массива, пользуйтесь методом экземпляра writeToFile: atomically:, относящимся к классу NSArray. Чтобы считать с диска содержимое любого массива, можно просто выделить экземпляр массива, а потом инициализировать его с помощью initWithContentsOfFile: — это метод-инициализатор для работы с массивами. Вот примеры использования обоих методов:

NSString *filePath = [NSTemporaryDirectory()

stringByAppendingPathComponent:@"MyFile.txt"];

NSArray *arrayOfNames = @[@"Steve", @"John", @"Edward"];

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

NSArray *readArray = [[NSArray alloc] initWithContentsOfFile: filePath];

if ([readArray count] == [arrayOfNames count]){

NSLog(@"Read the array back from disk just fine.");

} else {

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

}

} else {

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

}

Метод экземпляра writeToFile: atomically:, относящийся к классу NSArray, может сохранять лишь массивы, содержащие объекты следующих типов:

• 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

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

Интервал:

Закладка:

Сделать


Вандад Нахавандипур читать все книги автора по порядку

Вандад Нахавандипур - все книги автора в одном месте читать по порядку полные версии на сайте онлайн библиотеки LibKing.




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


Отзывы читателей о книге iOS. Приемы программирования, автор: Вандад Нахавандипур. Читайте комментарии и мнения людей о произведении.


Понравилась книга? Поделитесь впечатлениями - оставьте Ваш отзыв или расскажите друзьям

Напишите свой комментарий
x