Вход/Регистрация
iOS. Приемы программирования
вернуться

Нахавандипур Вандад

Шрифт:

До сих пор мы применяли для сохранения содержимого на диске высокоуровневые классы, например 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;

}

Обсуждение

API, предоставляемые классом NSFileManager, очень просты в использовании. Ничего удивительного в том, что для сохранения каталогов на диске эти API требуют написания всего нескольких строк кода. На первый взгляд метод createDirectoryAtPath: withIntermediateDirectories: attributes: error: может показаться страшноватым, но на самом деле не все так плохо. В дальнейшем я расскажу о различных параметрах, которые можно передать этому методу:

• createDirectoryAtPath — путь к тому каталогу, который требуется создать;

• withIntermediateDirectories — логический параметр. Если он имеет значение YES, то перед созданием конечного каталога метод создаст и все промежуточные каталоги. Например, если вы хотите создать каталог images, вложенный в каталог data, который, в свою очередь, вложен в каталог tmp, а каталог data пока не создан, то можете приказать этому методу создать каталог tmp/data/images/, установив для параметра withIntermediateDirectories значение YES. В таком случае система создаст и каталог data, и каталог images;

  • Читать дальше
  • 1
  • ...
  • 215
  • 216
  • 217
  • 218
  • 219
  • 220
  • 221
  • 222
  • 223
  • 224
  • 225
  • ...

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

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

  • Моя полка

Контакты

  • chitat.ebooker@gmail.com

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