如何在ios模拟器上加载swift中保存的图像?

时间:2015-04-19 03:21:59

标签: ios objective-c image swift

我用这个保存图像:

NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *filePath = [[paths objectAtIndex:0] stringByAppendingPathComponent:@"Image.png"];
[UIImagePNGRepresentation(image) writeToFile:filePath atomically:YES];

然后,我在模拟器中退出应用程序。然后我尝试用这个加载图像:

 let imageName = "Image.png"
 let image = UIImage(named: imageName)
 i1.image = image

我可以想到图片无法加载的两个原因:

  1. 在模拟器中退出应用程序会导致其被卸载。
  2. 我没有在swift和obj-c中获得正确的路径。

1 个答案:

答案 0 :(得分:3)

UIImage(named: imageName)无法从Documents目录中获取图像。它仅从应用程序本身(应用程序包)内部获取图像,这是一个非常不同的地方。应用程序包的内部不是您保存它的地方(也不可能在那里保存任何内容),因此UIImage(named: imageName)空手而归。它无法找到该文件,原因很简单,因为找不到该文件。

如果要从Documents目录中读取图像文件,请完全按照与编写文件相同的方式阅读:通过形成文件路径(或文件URL)并将其作为磁盘数据读取。例如,在形成文件路径后,调用UIImage的init(contentsOfFile:)