下面的代碼是可用的。圖像已成功保存在文檔目錄中,但問題只是第一次collectionViewController可以成功加載路徑的圖像。我必須刪除所有圖像存儲新的圖像,否則將顯示錯誤消息Swift - 除第一次使用外文件路徑不可用
"fatal error: unexpectedly found nil while unwrapping an Optional value".
因爲路徑是不可用的,readnsdata = NSData(contentsOfFile: filepath)!
會導致錯誤。
我不知道爲什麼只有第一次它可以工作。
path : "/var/mobile/Containers/Data/Application/29306029-BDCF-4BEA-93A6-D5626CBAAA90/Documents/x.jpg"
func writeNSDataToDisk(imageData:NSData){
let myindex = imgPathArray.count
let fileName = "\(self.imgPathArray.count)"
let paths = NSSearchPathForDirectoriesInDomains(NSSearchPathDirectory.DocumentDirectory, NSSearchPathDomainMask.UserDomainMask, true)
let docs: String = paths[0] as String
let filepath: String = (docs as NSString).stringByAppendingPathComponent("\(fileName).jpg")
let test = imageData.writeToFile(filepath, atomically: true)
if test {
self.imgPathArray.insert(filepath, atIndex: myindex)
print("The picture \(fileName).jpg is been saved.")
self.readORwriteList(true)//write list to txt file
}
print(self.imgPathArray)
}
func readNSDataFromDisk(fileIndex:Int) -> NSData{
let checkValidation = NSFileManager.defaultManager()
var readnsdata = NSData()
if (fileIndex <= self.imgPathArray.count) {
let filepath = self.imgPathArray[fileIndex]
if (checkValidation.fileExistsAtPath(filepath)){
print("File is available")
print("load \(fileIndex).jpg,filepath is \(filepath)")
readnsdata = NSData(contentsOfFile: filepath)!
if readnsdata.length != 0 {
getImageProperties(readnsdata)
}
}
else{
print("File is not available!!!")
}
}
return readnsdata
}
的解決我的問題:
不是存儲絕對文件路徑的,我的名字在一個正常做法的文件,並通過自己的名字搜索。沒有必要存儲路徑。
現在,每次運行應用程序時,文件的URL都是相對於Documents目錄URL構建的。
感謝
我從您的回答中受益匪淺。希望我的代碼風格變得更加清晰:p – Jinny