Ответ 1
// Given some file path URL: NSURL *pathURL
// Note: [pathURL isFileURL] must return YES
NSString *path = [pathURL path];
NSData *data = [[NSFileManager defaultManager] contentsAtPath:path];
У меня есть объект NSURL
, который дает мне путь к локальному файлу (в папке с документами). Я хочу заполнить объект NSData
содержимым этого файла. Пробовал использовать dataWithContentsOfURL:
, но это не удалось. Я знаю, что файл существует, потому что iPhone SDK
возвращает путь.
Может кто-нибудь рассказать мне, как я могу получить объект NSData
из URL
локального файла?
Спасибо.
// Given some file path URL: NSURL *pathURL
// Note: [pathURL isFileURL] must return YES
NSString *path = [pathURL path];
NSData *data = [[NSFileManager defaultManager] contentsAtPath:path];
Чтобы получить эту работу, вам просто нужно сделать:
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];
Убедитесь, что ваш локальный URL-адрес начинается с "file://" то вам просто нужно это сделать:
NSData *fileData = [NSData dataWithContentsOfFile:fileURL.path];
Для swift3 я нашел ответ из следующего полезного URL
(Я получал следующий путь после захвата изображения с помощью плагина phonegap
file:///var/mobile/Containers/Data/Application/B64B06DE-7976-45CF-9BE2-661F0F309A06/tmp/abcded.jpg)
если пусть videoURL = URL (строка: urlString), пусть videodata = try? Данные (contentsOf: videoURL) { // Добавить код Alamofire здесь }