2016-10-28 5 views
0

Я пишу изображение на тренажерах каталога кэша с помощьюimageWithcontentsOfFile не в состоянии загрузить сохраненное изображение из имитатора кэша реж

NSURL *cacheDir = [[NSFileManager defaultManager] URLsForDirectory:NSCachesDirectory 
                 inDomains:NSUserDomainMask].lastObject; 
NSURL *avatarFileURL = [cacheDir URLByAppendingPathComponent:@"test.png" isDirectory:NO]; 
NSData *imageData = UIImagePNGRepresentation(avatarImage); 
[imageData writeToURL:avatarFileURL atomically:YES]; 

Это прекрасно работает, и я проверить изображение, регистрируя avatarFile URL и загрузки в браузер, который отображает изображение кэша.

Я затем попытаться прочитать тестовое изображение обратно, и я получаю разные результаты, если я использую imageWithContentsOfFile: и imageWithData: следующим образом:

NSURL *cacheDir = [[NSFileManager defaultManager] URLsForDirectory:NSCachesDirectory 
                 inDomains:NSUserDomainMask].lastObject; 
NSURL *avatarFileURL = [cacheDir URLByAppendingPathComponent:@"test.png" isDirectory:NO]; 
// Returns a nil. 
NSString *avatarFile = avatarFileUrl.absoluteString; 
UIImage *image1 = [UIImage imageWithContentsOfFile:avatarFile]; 

// Returns the image. 
NSData *imageData = [NSData dataWithContentsOfURL:avatarFileUrl]; 
UIImage *image2 = [UIImage imageWithData:imageData]; 

Я затрудняюсь объяснить, почему imageWithContentsOfFile терпит неудачу и imageWithData работы когда они оба обращаются к одному и тому же URL. Я проверил URL, зарегистрировав его, и URL-адреса точно совпадают.

Кто знает, почему imageWithContentsOfFile не работает?

ответ

1

Ваш вопрос с этой линией:

NSString *avatarFile = avatarFileUrl.absoluteString; 

Посмотрите на значение avatarFile. Это будет что-то вроде file:///..... imageWithContentsOfFile: ожидает правильный путь к файлу, а не URL-адрес файла.

Вам необходимо правильно преобразовать URL-адрес файла в путь. Это делается следующим образом:

NSString *avatarFile = avatarFileUrl.path; 
+0

Теперь я чувствую себя действительно глупо, не заметив этого :-) Спасибо. – drekka

 Смежные вопросы

  • Нет связанных вопросов^_^