填充图像数据阵列时,我节省UIImages磁盘:崩溃从磁盘
let sketchData: NSData = UIImagePNGRepresentation(sketch)
let sketchPath: String = NSHomeDirectory().stringByAppendingPathComponent("Documents/Sketch\(indexNumber).png")
sketchData.writeToFile(sketchPath, atomically: true)
然后,我想,重新使用他们的数组:
if lengthOfSketchArray > 0 {
for indexNumber in 0...lengthOfSketchArray {
let sketchPath: String = NSHomeDirectory().stringByAppendingPathComponent("Documents/Sketch\(indexNumber).png")
let image = UIImage(contentsOfFile: sketchPath)
slideSketchArray[indexNumber] = image!
}
}
在最后行,我得到“致命的错误:意外地发现零,同时解开一个可选值”。
我试了很多变化,但每一个崩溃。我究竟做错了什么?
UPDATE
它的工作吧!我根据评论改变了很多东西,包括使用 NSSearchPathForDirectoriesInDomains
,以及不再将图像保存在数组中。现在我正在保存图像路径,并在需要时从磁盘加载图像。
func saveImageToDisk() {
let sketchData: NSData = UIImagePNGRepresentation(sketch)
let destinationFolder: String = NSSearchPathForDirectoriesInDomains(.DocumentDirectory, .UserDomainMask, true)[0] as String
let sketchPath: String = "\(destinationFolder)\(currentProjectID).png"
sketchData.writeToFile(sketchPath, atomically: true)
let currentMetadata: [String: String] = [
"sketchpath": sketchPath
]
allMetadata.append(currentMetadata)
defaults.setObject(allMetadata, forKey: "allMetadata")
func loadImageAtIndex(index: Int) -> UIImage {
let sketchPath: String = allMetadata[index].objectForKey("sketchpath") as String
let image = UIImage(contentsOfFile: sketchPath)
return image!
}
你可以在循环的每次迭代中记录'sketchPath'并发布结果吗? – NobodyNada 2015-02-11 23:23:09
您正在执行'for indexNumber in 0 ... lengthOfSketchArray'。你的意思是......“而不是”......“? – Rob 2015-02-11 23:24:27
您不应该使用'NSHomeDirectory'并追加到它来查找文档目录。相反,您应该使用'NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,NSUserDomainMask,YES)'或'NSFileManager.URLsForDirectory(NSDocumentDirectory,domainMask:.UserDomainMask)'在iOS 8中,Documents目录不再与应用程序目录位于同一位置。 – 2015-02-11 23:37:44