ios - 无法在ios swift中将文件保存到本地存储

标签 ios swift swift3 ios7

<分区>

我正在尝试从服务器下载文件内容,在客户端创建一个文件并将所有内容传输到该文件。我正在将文件保存到本地存储,但无法保存并抛出您无权保存在文件夹中的异常。尝试了很多东西,但无法做到。我对这个 ios 编程很陌生。请帮助我,在此先感谢。

下面是我的代码:

 let documentsUrl =  FileManager.default.urls(for: .documentDirectory, in: .userDomainMask).first
 var fileURL : URL = URL(fileURLWithPath: documentsUrl!.path+filename)
  fileURL = URL(fileURLWithPath: documentsUrl!.path+filename+".doc")
  let data = NSData(contentsOf: tempLocalUrl)
                do {
                    try data?.write(to: fileURL, options: .atomic)
                } catch {
                    print(error,"helooooooooooooooooo")
                }

我已经使用了 relativepath,absolutestring,但仍然没有成功。

这是错误:

Error Domain=NSCocoaErrorDomain Code=513 "You don’t have permission to save the file “DocumentsImport From IE.doc” in the folder “0103E60B-478F-475B-A8F2-788534F5D206”." UserInfo={NSFilePath=/var/mobile/Containers/Data/Application/0103E60B-478F-475B-A8F2-788534F5D206/DocumentsImport From IE.doc, NSUnderlyingError=0x1076efe90 {Error Domain=NSPOSIXErrorDomain Code=1 "Operation not permitted"}}

最佳答案

永远不要构建像

这样的路径
documentsUrl!.path+filename+".doc"

不要那样做。您可能会忘记您实际使用的路径分隔符。

URL 提供了专门的 API 来构建路径

let documentsUrl =  FileManager.default.urls(for: .documentDirectory, in: .userDomainMask).first!
let fileURL = documentsUrl.appendingPathComponent(filename).appendingPathExtension("doc")
do {
    let data = try Data(contentsOf: tempLocalUrl) // not NSData !!
    try data.write(to: fileURL, options: .atomic)
} catch {
    print(error,"helooooooooooooooooo")
}

关于ios - 无法在ios swift中将文件保存到本地存储,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51871355/

相关文章:

iOS:是否可以同时从耳机和扬声器发送音频?

ios - 如何使用照片位置数据

ios - Storyboard 登录屏幕的最佳实践,在注销时处理数据清除

android - 在一项测试中,Firebase A/B测试同时针对Android和iOS运行

ios - 如何在 Swift 中正确地将 block 处理程序传递给此函数?

ios - Swift UIViewController 添加 UISearchController

ios - UISegmentedControl 中的纵横比适合图像

json - 使用未声明的类型 'JSON' 和使用未解析的标识符 'JSONEncoding'

ios - 无法将值类型 "User?"转换为预期的参数类型 "User!"

ios - 从 Swift 的 TimeInterval 中删除时间组件?