Ios Swift-除首次使用外,文件路径不可用
下面的代码是工作。图像已成功保存在文档目录中,但问题只是collectionViewController首次成功加载具有路径的图像。我必须删除所有图像以存储新图像,否则将显示错误消息 “致命错误:在展开可选文件时意外发现零。” 价值观” 由于路径不可用,Ios Swift-除首次使用外,文件路径不可用,ios,swift,nsfilemanager,Ios,Swift,Nsfilemanager,下面的代码是工作。图像已成功保存在文档目录中,但问题只是collectionViewController首次成功加载具有路径的图像。我必须删除所有图像以存储新图像,否则将显示错误消息 “致命错误:在展开可选文件时意外发现零。” 价值观” 由于路径不可用,readnsdata=NSData(contentsOfFile:filepath)将导致错误 我不知道为什么只有第一次它才能工作 路径: “/var/mobile/Containers/Data/Application/29306029-BDC
readnsdata=NSData(contentsOfFile:filepath)代码>将导致错误
我不知道为什么只有第一次它才能工作
路径:
“/var/mobile/Containers/Data/Application/29306029-BDCF-4BEA-93A6-D5626CBAA90/Documents/x.jpg”
func writeNSDataToDisk(imageData:NSData){
让myindex=imgPathArray.count
let fileName=“\(self.imgPathArray.count)”
让path=NSSearchPathForDirectoriesInDomains(NSSearchPathDirectory.DocumentDirectory,NSSearchPathDomainMask.UserDomainMask,true)
将docs:String=路径[0]设为字符串
让filepath:String=(文档为NSString.stringByAppendingPathComponent(“\(fileName.jpg”))
让test=imageData.writeToFile(文件路径,原子性:true)
如果测试{
self.imgPathArray.insert(文件路径,atIndex:myindex)
打印(“图片\(文件名).jpg已保存。”)
self.readORwriteList(true)//将列表写入txt文件
}
打印(self.imgPathArray)
}
func readNSDataFromDisk(fileIndex:Int)->NSData{
让checkValidation=NSFileManager.defaultManager()
var readnsdata=NSData()
如果(fileIndex替换readnsdata=NSData(contentsOfFile:filepath)!
为readnsdata=NSData(contentsOfFile:filepath)
。希望这会有帮助:)替换readnsdata=NSData(contentsOfFile:filepath)!
为readnsdata=NSData(contentsOfFile:filepath)?
。希望这会有所帮助:)首先是一个旁注。苹果公司特别建议不要使用fileExistsAtPath
您在这里使用的方式
注
正在尝试基于的当前状态断言行为
文件系统或文件系统上的特定文件不可用
推荐。这样做可能会导致奇怪的行为或种族状况。这是
尝试一个操作(例如加载文件或创建
目录),检查错误,并优雅地处理这些错误
而不是试图提前弄清楚操作是否正确
我们会成功的
尝试替换这个
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!!!")
}
…用这个
do {
readnsdata = try NSData(contentsOfFile: filepath, options: .DataReadingMappedIfSafe)
if readnsdata.length != 0 {
getImageProperties(readnsdata)
}
}
catch let e {
print("Couldn't read file at \(filepath) because \(e)")
}
这种方法无需猜测即可提供所需的信息。只需运行代码,看看NSData初始值设定项抛出时会发生什么!:)
[更新:非主题意见]
虽然不在长方法中添加返回是一个好习惯,但这里没有太多内容。我个人认为,如果没有临时readnsdata
变量,代码的可读性会更高。这样一来,在我看来,快乐路径和默认返回值在第一次读取时都很清楚:
func readNSDataFromDisk2(fileIndex:Int) -> NSData{
if (fileIndex <= self.imgPathArray.count) {
let path = self.imgPathArray[fileIndex]
do {
let data = try NSData(contentsOfFile: path, options: .DataReadingMappedIfSafe)
if data.length != 0 {
getImageProperties(data)
}
return data
}
catch let e {
print("Couldn't read file at \(path) because \(e)")
}
}
return NSData()
}
func readNSDataFromDisk2(文件索引:Int)->NSData{
if(fileIndex首先是一个旁注。苹果公司特别建议不要使用fileExistsAtPath
您在这里使用的方式
注
正在尝试基于的当前状态断言行为
文件系统或文件系统上的特定文件不可用
推荐。这样做可能会导致奇怪的行为或种族状况。这是
尝试一个操作(例如加载文件或创建
目录),检查错误,并优雅地处理这些错误
而不是试图提前弄清楚操作是否正确
我们会成功的
尝试替换这个
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!!!")
}
…用这个
do {
readnsdata = try NSData(contentsOfFile: filepath, options: .DataReadingMappedIfSafe)
if readnsdata.length != 0 {
getImageProperties(readnsdata)
}
}
catch let e {
print("Couldn't read file at \(filepath) because \(e)")
}
这种方法无需猜测即可提供所需的信息。只需运行代码,看看NSData初始值设定项抛出时会发生什么!:)
[更新:非主题意见]
虽然不在长方法中添加返回是一个好习惯,但这里没有太多内容。我个人认为,如果没有临时readnsdata
变量,代码的可读性会更高。这样一来,在我看来,快乐路径和默认返回值在第一次读取时都很清楚:
func readNSDataFromDisk2(fileIndex:Int) -> NSData{
if (fileIndex <= self.imgPathArray.count) {
let path = self.imgPathArray[fileIndex]
do {
let data = try NSData(contentsOfFile: path, options: .DataReadingMappedIfSafe)
if data.length != 0 {
getImageProperties(data)
}
return data
}
catch let e {
print("Couldn't read file at \(path) because \(e)")
}
}
return NSData()
}
func readNSDataFromDisk2(文件索引:Int)->NSData{
如果(fileIndex)我从你的答案中受益匪浅。希望我的代码风格变得更加清晰:pI从你的答案中受益匪浅。希望我的代码风格变得更加清晰:p