iOS/Swift无法将文件写入为将文件路径视为目录路径

iOS/Swift无法将文件写入为将文件路径视为目录路径,ios,swift,Ios,Swift,我有下面的swift函数,我希望它能将传入的字节保存到iOS上的JPEG文件中。不幸的是,对data.write的调用引发了一个异常,我得到了错误消息 文件夹“studioframe0.jpg”不存在。写入文件:/var/mobile/Containers/Data/Application/2A504F84-E8B7-42F8-B8C3-3D0A53C1E11A/Documents/studioframe0.jpg--文件:/// 为什么iOS认为它是指向一个不存在的目录的目录路径,而不是我要求

我有下面的swift函数,我希望它能将传入的字节保存到iOS上的JPEG文件中。不幸的是,对data.write的调用引发了一个异常,我得到了错误消息

文件夹“studioframe0.jpg”不存在。写入文件:/var/mobile/Containers/Data/Application/2A504F84-E8B7-42F8-B8C3-3D0A53C1E11A/Documents/studioframe0.jpg--文件:///

为什么iOS认为它是指向一个不存在的目录的目录路径,而不是我要求它编写的文件

func保存文件(数据:数据){
如果savedImageCount<10{
guard let documentDirectoryPath=FileManager.default.URL(用于:.documentDirectory,位于:.userDomainMask中)。首先{
返回
}
让imgPath=URL(fileURLWithPath:documentDirectoryPath.appendingPathComponent(“studioframe\(savedImageCount.jpg”).absoluteString)
savedImageCount+=1
做{
尝试数据写入(到:imgPath,选项:。原子)
打印(“已保存\(imgPath)到磁盘”)
}捕捉错误{
打印(“\(错误.本地化描述)写入\(imgPath)”)
}
}
}
URL(fileURLWithPath
绝对字符串
一起是错误的

您必须编写(注意不同的
URL
初始值设定项):

但是这个(
URL
→ <代码>字符串→ <代码> URL非常繁琐,有一个简单得多的解决方案,请考虑(String)路径和URL< /P>之间的区别
let documentDirectoryURL = FileManager.default.urls(for: .documentDirectory, in: .userDomainMask).first! // the Documents directory is guaranteed to exist.
let imgURL = documentDirectoryURL.appendingPathComponent("studioframe\(savedImageCount).jpg")
...
   try data.write(to: imgURL, options: .atomic)
URL(fileURLWithPath
absoluteString
一起是错误的

您必须编写(注意不同的
URL
初始值设定项):

但是这个(
URL
→ <代码>字符串→ <代码> URL非常繁琐,有一个简单得多的解决方案,请考虑(String)路径和URL< /P>之间的区别
let documentDirectoryURL = FileManager.default.urls(for: .documentDirectory, in: .userDomainMask).first! // the Documents directory is guaranteed to exist.
let imgURL = documentDirectoryURL.appendingPathComponent("studioframe\(savedImageCount).jpg")
...
   try data.write(to: imgURL, options: .atomic)

这应该重新打开,uiimage问题是另外一个问题。这里的问题是,中间目录尚未创建。这可以通过文件管理器创建,这样就不会再将文件与文件夹混淆。接受的答案是一个很好的解决方法,但不能解决缺少目录的核心问题。这应该重新打开时,uiimage问题是另外一个问题。这里的问题是,中间目录尚未创建。这可以通过文件管理器创建,这样就不会再将文件与文件夹混淆。接受的答案是一个很好的解决方法,但不能解决缺少目录的核心问题。