繁体   English   中英

Swift 3:无法将文件写入文档目录

[英]Swift 3 : Fail to write file to Document Directory

我想下载一个文件并写入文档目录,但是当我在simulator上运行时,它返回如下错误:

错误域= NSCocoaErrorDomain代码= 4“文件夹“ logo.jpg”不存在。”

我写这样的代码,我错了吗? 谢谢。

var absPath = "./image/logo.png"
var sourceUrl = "http://www.example.com/data/"
var documentUrl = fileManager.urls(for: .documentDirectory, in: .userDomainMask)[0] as URL                   
let strIdx = absPath.index(absPath.startIndex, offsetBy: 2)

if (absPath.hasPrefix("./"))
{
   absPath = absPath.substring(from: strIdx)
}

let sourceUrl = URL(string: self.sourceUrl.appending(absPath))
let fileData = try NSData(contentsOf: sourceUrl!, options: NSData.ReadingOptions())
let destPath = documentUrl.appendingPathComponent(absPath)

do {
  try fileData.write(toFile: destPath.path, options: .atomicWrite)
} catch {
  print(error)
}

absPath包含一个子目录。 如果要将文件直接保存到“ Documents ,则必须去除image子目录。

let destPath = documentUrl.appendingPathComponent(sourceUrl!.lastPathComponent)

否则,您必须在Documents创建image目录。


注意:在Swift 3中,请勿使用NSData ,强烈建议使用与网址相关的API

do {
    let fileData = try Data(contentsOf: sourceUrl!)  
    try fileData.write(to: sourceUrl!, options: .atomic)
...

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM