2015-12-29 30 views
1

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

下面是代码:

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 
    } 
} 

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

感谢,

亨利

+0

不要使用强制解包,你打开门崩溃,如果你使用。 – Cristik

+0

好的,但它仍然不加载图像.. – user3900157

回答

2

我已经重写你的代码到它自己的功能,这样你就可以不必更改你的代码太多了测试。它适用于我,这导致我怀疑您的路径设置不正确,或者您的代码无法通过您提供的路径访问它所访问的文件来创建映像。下面的功能会告诉你,如果该文件不存在 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 
} 
+0

谢谢。这是我得到的:**/Users/henry/Library/Developer/CoreSimulator/Devices/D475A874-0BCE-4BA7-9473-4FAAD866A52C/data/Containers/Data/Application/DC1C544D-EA34-4C5E-AE44-A6772FD1A44D/Documents /users/facebook_10153298923695141/PP_IMG_1450308308581.jpg ::无法创建图像] ** – user3900157

+1

因此,您现在知道图像上有些东西了。我会去看看图像文件,并通过其他应用程序确认它是否有效 - 即在Preview中打开它:) –

+0

如何检查Xcode中的图像?它是从互联网下载的图像,发生变化..我无法在“设备”窗口中看到模拟器的内容。 – user3900157