Изображение не загружается из пути к файлу в iOS

Я хочу загрузить изображение из сохраненного пути к файлу изображения, которое хранится в моем iPhone. Я получаю путь, но все же он говорит, что файл не существует. Это мой код:

NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); NSString *documentsDirectory = [paths objectAtIndex:0]; NSString *imagePath = [documentsDirectory stringByAppendingPathComponent:[NSString stringWithFormat:@"%@",self.imageName]]; BOOL fileExists=[[NSFileManager defaultManager] fileExistsAtPath:imagePath]; NSLog(@"%@",imagePath); UIImage *fetchImage = [UIImage imageWithContentsOfFile:imagePath]; 

fileExists возвращает NO, даже когда я получаю этот путь:

/var/mobile/Applications/2ED5C185-8528-48D3-BE0B-28582DC3D294/Documents/IMG_0028.JPG

6 Solutions collect form web for “Изображение не загружается из пути к файлу в iOS”

Я столкнулся с этой проблемой. Надеюсь, это спасет кого-то головную боль по дороге.

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

 /var/mobile/Applications/2ED5C185-8528-48D3-BE0B-28582DC3D294/Documents/ 

Моя проблема заключалась в том, что я сохранял путь к документу в файле JSON и пытался его получить при последующих сборках. Эта часть изменяется при каждой сборке:

2ED5C185-8528-48D3-BE0B-28582DC3D294

Храните только имя файла с расширением и динамически перемещайте путь к документу. Затем вы можете перейти к префиксу пути в имени файла.

Попробуй это, он отлично работает для меня

 NSString* documentsPath = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) objectAtIndex:0]; NSString *imageName = [[NSString alloc]initWithFormat:@"%@",self.imageName ]; NSString* foofile = [documentsPath stringByAppendingPathComponent:imageName]; BOOL fileExists = [[NSFileManager defaultManager] fileExistsAtPath:foofile]; if (fileExists) { NSLog(@"alreday Exists"); } 

// для показа изображения на изображении

 NSString *docDir = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) objectAtIndex:0]; NSString *pngFilePath = [NSString stringWithFormat:@"%@/%@", docDir,self.imageName]; UIImage *img = [UIImage imageWithContentsOfFile:pngFilePath]; 

попробуй это:

 NSString *strNew=[dci valueForKey:@"uThumbPath"]; NSString *strCompare=[NSString stringWithFormat:@"%@.jpg",[self MD5String:strNew]]; NSString* documentsPath = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) objectAtIndex:0]; NSLog(@"%@",documentsPath); NSString *strFileName=[NSString stringWithFormat:@"%@/%@",documentsPath,strCompare]; if([[NSFileManager defaultManager] fileExistsAtPath:strFileName]) { NSLog(@"Downloaded From Localpath"); NSString *inputPath= strFileName; NSString *extension=[inputPath pathExtension]; NSString *file=[[inputPath lastPathComponent]stringByDeletingPathExtension]; NSString *dir=[inputPath stringByDeletingLastPathComponent]; NSString *imagePATH=[NSBundle pathForResource:file ofType:extension inDirectory:dir]; UIImage* theImage=[UIImage imageWithContentsOfFile:imagePATH]; cell.imgThumb.image=theImage; } else{ NSLog(@"Downloaded From Server"); NSURL *URL = [NSURL URLWithString: [dci valueForKey:@"uThumbPath"]]; NSURLRequest* request = [NSURLRequest requestWithURL:URL]; NSLog(@"%@",strNew); [NSURLConnection sendAsynchronousRequest:request queue:[NSOperationQueue mainQueue] completionHandler:^(NSURLResponse * response, NSData * data1, NSError * error) { if (!error){ [self saveLocally:data1 name:strNew]; cell.imgThumb.image = [UIImage imageWithData:data1]; } }]; } 

и использовать это

 - (NSString *)MD5String:(NSString *)string{ const char *cstr = [string UTF8String]; unsigned char result[16]; CC_MD5(cstr, strlen(cstr), result); return [NSString stringWithFormat: @"%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X", result[0], result[1], result[2], result[3], result[4], result[5], result[6], result[7], result[8], result[9], result[10], result[11], result[12], result[13], result[14], result[15] ]; } 

попробуйте со следующим кодом:

 NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); NSString *documentsDirectory = [paths objectAtIndex:0]; NSString *imagePath = [documentsDirectory stringByAppendingPathComponent:[NSString stringWithFormat:@"%@.JPG",self.imageName]]; BOOL fileExists=[[NSFileManager defaultManager] fileExistsAtPath:imagePath]; NSLog(@"%@",imagePath); UIImage *fetchImage = [UIImage imageWithContentsOfFile:imagePath]; 
 UIImage *image =[UIImage imageWithData:[NSData dataWithContentsOfFile:self.aStrImagePath]]; 

У меня это случилось со мной. XCode не обновил мои файлы правильно после добавления его в мой проект. Попробуйте сделать чистую (Product -> Clean) и посмотреть, устраняет ли это проблему.

  • NSDictionary в NSDictionary
  • Возможно ли иметь несколько экземпляров iAds?
  • iOS - первичный ключ атрибута основного набора данных
  • Должен ли я использовать один сертификат распространения iOS для подписывания различных приложений?
  • как добавить несколько кнопок в scrollview
  • Аварии UIkit также не могут воспроизвести
  • ios8 UIImage imageNamed: crash
  • как изменить порядок укладки или объекты в XCode xib?
  • MvvmCross: GestureRecognized привязка к действию ViewModel
  • Пересылка UIGesture в режим просмотра
  • Проверка электронной почты и телефонов в Swift
  • PhoneC: Разработка iOS проста с помощью XCode, Swift3, UITableView, cocatouch, давайте создадим приложения для iPhone, iPad и Macbook.