UIImage返回nil但存在

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了UIImage返回nil但存在相关的知识,希望对你有一定的参考价值。

我在Swift中遇到了问题。我尝试加载存储在DocumentsDirectory中的图像,但它返回nil。

这是代码:

if NSFileManager.defaultManager().fileExistsAtPath(url!.path!) {
    //show image
    print("Image " + key + " exists")
    if let image =  UIImage(contentsOfFile: url!.path!){
        return image
    }
    else {
        print("error image")
        return nil
    }
}

我总是得到“错误图像”,但文件存在。我不明白这个问题。

谢谢,

亨利

答案

我已经将代码重写为它自己的函数,因此您可以在不必更改代码的情况下对其进行测试。它适用于我,这使我怀疑您的路径设置不正确或您的代码无法通过您提供的路径从其访问的文件创建图像。下面的函数将告诉您文件是否不存在或UIImage是否无法创建图像。

您需要隔离错误发生的位置并从那里开始。

func getImage(url: NSURL) -> UIImage? {

    var image : UIImage?

    if let path = url.path {
        if FileManager.default.fileExists(atPath: path) {
            if let newImage = UIImage(contentsOfFile: path)  {
                image = newImage
            } else {
                print("getImage() [Warning: file exists at (path) :: Unable to create image]")
            }

        } else {
            print("getImage() [Warning: file does not exist at (path)]")
        }
    }

    return image
}

以上是关于UIImage返回nil但存在的主要内容,如果未能解决你的问题,请参考以下文章

swift上的UIImage无法检查nil

UIImage 仅在 UIImageView 中返回 nil

UIImage 的后台线程返回结果为 nil

无法设置 UIImage,总是返回 nil

使用 PHImageManager 时,PHAsset 返回 UIImage 的 nil 值

iPhone - UIImage imageWithData 返回 nil