//the Path of images
public let appMainDirectory = NSHomeDirectory()+"/Documents"
public let imgDirectory = appMainDirectory+"/images"
//the UIImage comes from a UIImageView
func saveImageToLocal(_ img:UIImage)->String{
//get image's data
let imgData:Data = UIImageJPEGRepresentation(img, 1.0)!
//use time as file name
let time:Date = Date()
let timeFormat = DateFormatter()
timeFormat.dateFormat = "yyyMMddHHmmssSSS"
let imgName = timeFormat.string(from: time) as String
let imgURL:String = imgDirectory+"/"+imgName+".jpg"
//store image into sandbox
writeDataToEndOfFile(fileURL: imgURL, contentToWrite:imgData, create: true)
return imgURL
}
func writeDataToEndOfFile(fileURL url1:String,contentToWrite fileData:Data,create createOrNot:Bool){
let fM:FileManager = FileManager.default
if( !fM.fileExists(atPath:url1) && createOrNot ){
fM.createFile(atPath: url1, contents: nil, attributes: nil)
}
let fUpdater:FileHandle = FileHandle(forUpdatingAtPath: url1)!
fUpdater.seekToEndOfFile()
fUpdater.write(fileData)
fUpdater.closeFile()
}
func readImage(imageUrl url:String) -> UIImage? {
let fM:FileManager = FileManager.default
if( !fM.fileExists(atPath:url)){
print(fM.fileExists(atPath:url))
fM.createFile(atPath: url, contents: nil, attributes: nil)
print(fM.fileExists(atPath:url))
}
let fUpdater:FileHandle = FileHandle(forUpdatingAtPath: url)!
let imageData:Data = fUpdater.availableData
fUpdater.closeFile()
let image = UIImage(data:imageData)
return image
}
在每次发布时,之前发布的图像似乎都消失了。如果我尝试使用' readImage'功能,应用程序将崩溃,并且在解开可选值时会意外地发现错误。
顺便说一句,两个' print(fM.fileExists(atPath:url))'的输出。都是假的。
答案 0 :(得分:0)
我已经解决了这个问题。
问题不在上面的代码中。这些代码效果很好。 我无法再找到我的图像的原因是因为应用程序的沙箱URL会在每次更新时发生变化。因为我还在尝试使用以前版本的URL来读取图像,所以会发生错误。