Загрузить UIImage из каталога документов
Я пытаюсь загрузить UIImage
из каталога документов и установить его в UIImageView
, как показано ниже:
NSString *pngfile = [[MyUtil getLocalDirectory] stringByAppendingPathComponent:@"school.png"];
NSLog(@"%@", pngfile);
if ([[NSFileManager defaultManager] fileExistsAtPath:pngfile]) {
NSData *imageData = [NSData dataWithContentsOfFile:pngfile];
UIImage *img = [UIImage imageWithData:imageData];
[schoolImage setImage:img];
}
Однако, когда я пытаюсь сделать это, изображение никогда не загружается. Изображение находится в Documents/MyAppCustomDirectory/school.png
. Правильно ли загружается из этого каталога?
Я также пробовал несколько других: UIImage imageWithContentsOfFile
, среди прочих способов, основанных на ответах SO.
Ответы
Ответ 1
Чтобы получить каталог документов, вы должны использовать:
NSArray *documentPaths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDir = [documentPaths objectAtIndex:0];
NSString *pngfile = [documentsDir stringByAppendingPathComponent:@"school.png"];
Я не совсем уверен, что вам также нужно добавить "MyAppCustomDirectory", но я так не думаю.
Ответ 2
Решение Swift 4:
guard let documentsDirectory = try? FileManager.default.url(for: .documentDirectory,
in: .userDomainMask,
appropriateFor:nil,
create:false)
else {
// May never happen
print ("No Document directory Error")
return nil
}
// Construct your Path from device Documents Directory
var imagesDirectory = documentsDirectory
// Only if your images are un a subdirectory named 'images'
imagesDirectory.appendPathComponent("images", isDirectory: true)
// Add your file name to path
imagesDirectory.appendPathComponent("school.png")
// Create your UIImage?
let result = UIImage(contentsOfFile: imagesDirectory.path)