从文档目录加载UIImage

12

我正在尝试从文档目录加载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中。使用上述方法从该目录加载是否正确?

我还尝试了其他几种方法,如基于SO响应的UIImage imageWithContentsOfFile等方式。


展示 MyUtil getLocalDirectory 的代码。 - rmaddy
2个回答

10

要获取文档目录,您应该使用:

NSArray  *documentPaths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDir  = [documentPaths objectAtIndex:0];
NSString  *pngfile = [documentsDir stringByAppendingPathComponent:@"school.png"];

我不太确定您是否还需要添加'MyAppCustomDirectory',但我觉得不需要。


5

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)

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接