iPhone - NSData из URL локального файла - PullRequest
81 голосов
/ 03 октября 2009

У меня есть объект NSURL, который дает мне путь к локальному файлу (в папке документов). Я хочу заполнить объект NSData содержимым этого файла. Пробовал использовать dataWithContentsOfURL:, но это не удалось. Я знаю, что файл существует, потому что iPhone SDK возвращает путь.

Может кто-нибудь сказать мне, как я могу получить NSData объект из URL локального файла?

Спасибо.

Ответы [ 4 ]

159 голосов
/ 03 октября 2009
// Given some file path URL: NSURL *pathURL
// Note: [pathURL isFileURL] must return YES
NSString *path = [pathURL path];
NSData *data = [[NSFileManager defaultManager] contentsAtPath:path];
28 голосов
/ 16 ноября 2012

Чтобы получить эту работу, вам просто нужно сделать:

NSURL *imgPath = [[NSBundle mainBundle] URLForResource:@"search" withExtension:@"png"];
NSString*stringPath = [imgPath absoluteString]; //this is correct  

//you can again use it in NSURL eg if you have async loading images and your mechanism 
//uses only url like mine (but sometimes i need local files to load)
NSData *data = [NSData dataWithContentsOfURL:[NSURL URLWithString:stringPath]];
UIImage *ready = [[[UIImage alloc] initWithData:data] autorelease];
2 голосов
/ 05 августа 2016

Убедитесь, что ваш локальный URL начинается с "file: //" тогда вам просто нужно сделать это:

 NSData *fileData = [NSData dataWithContentsOfFile:fileURL.path];
0 голосов
/ 02 мая 2017

Для swift3 я нашел ответ от следующего URL полезным

(я получал следующий путь после захвата изображения с помощью плагина phonegap

файл: ///var/mobile/Containers/Data/Application/B64B06DE-7976-45CF-9BE2-661F0F309A06/tmp/abcded.jpg)

https://stackoverflow.com/a/41043447/6383908

если let videoURL = URL (строка: urlString), пусть videodata = try? Данные (содержимое: videoURL) { // Добавить код Alamofire здесь } * +1010 *

...