Ios UIImage返回nil但存在

Ios UIImage返回nil但存在,ios,swift,uiimage,Ios,Swift,Uiimage,我在斯威夫特有个问题。 我尝试加载存储在DocumentsDirectory中的图像,但它返回nil 代码如下: if NSFileManager.defaultManager().fileExistsAtPath(url!.path!) { //show image print("Image " + key + " exists") if let image = UIImage(contentsOfFile: url!.path!){ return i

我在斯威夫特有个问题。 我尝试加载存储在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
    }
}
我总是得到“错误图像”,但文件存在。我不明白这个问题

谢谢


Henry

我已经将您的代码重写为它自己的函数,这样您就可以测试它,而无需对代码进行太多更改。它对我来说工作正常,这让我怀疑您的路径设置不正确,或者您的代码无法从它通过您提供的路径访问的文件中创建图像。下面的函数将告诉您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中是否不存在文件或创建图像失败

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

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
}

不要使用强制展开,如果使用,则会导致门崩溃。好的,但它仍然不会加载图像。不要使用强制展开,如果使用,则会导致门崩溃。好的,但它仍然不会加载图像。谢谢。以下是我得到的信息:/Users/henry/Library/Developer/CoreSimulator/Devices/D475A874-0BCE-4BA7-9473-4FAAD866A52C/data/Containers/data/Application/DC1C544D-EA34-4C5E-AE44-A6772FD1A44D/Documents/Users/facebook10153298923695141/PP_IMG_1450308308581.jpg::无法创建图像]因此您现在知道图像出了问题。我会去查看图像文件,并通过另一个应用程序确认它是有效的-即在预览中打开:)如何在Xcode中检查图像?这是一个从互联网下载的图像,改变了。。我无法在“设备”窗口中看到模拟器的内容。因为您正在使用模拟器,所以只需转到路径/Users/henry/Library/Developer/CoreSimulator/Devices/D475A874-0BCE-4BA7-9473-4F即可‌​AAD866A52C/数据/容器/数据/应用程序/DC1C544D-EA34-4C5E-AE44-A6772FD1A44D/‌​您计算机上的Documents/users/facebook_10153298923695141/PP_IMG_1450308308581.jpg:)在finder窗口中使用command+shift+g并粘贴路径!好把戏。看起来图像被破坏了。我把它修好了。谢谢,谢谢。以下是我得到的信息:/Users/henry/Library/Developer/CoreSimulator/Devices/D475A874-0BCE-4BA7-9473-4FAAD866A52C/data/Containers/data/Application/DC1C544D-EA34-4C5E-AE44-A6772FD1A44D/Documents/Users/facebook10153298923695141/PP_IMG_1450308308581.jpg::无法创建图像]因此您现在知道图像出了问题。我会去查看图像文件,并通过另一个应用程序确认它是有效的-即在预览中打开:)如何在Xcode中检查图像?这是一个从互联网下载的图像,改变了。。我无法在“设备”窗口中看到模拟器的内容。因为您正在使用模拟器,所以只需转到路径/Users/henry/Library/Developer/CoreSimulator/Devices/D475A874-0BCE-4BA7-9473-4F即可‌​AAD866A52C/数据/容器/数据/应用程序/DC1C544D-EA34-4C5E-AE44-A6772FD1A44D/‌​您计算机上的Documents/users/facebook_10153298923695141/PP_IMG_1450308308581.jpg:)在finder窗口中使用command+shift+g并粘贴路径!好把戏。看起来图像被破坏了。我把它修好了。谢谢