2017-09-11 19 views
0

私は、ファイルをダウンロードして、ドキュメントディレクトリに書き込みたいが、私はsimulator上で実行したとき、それはこのようなエラーを返すドキュメントディレクトリにファイルを書き込むために失敗:スウィフト3:

エラードメイン= 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) 
} 

答えて

0

absPathにはサブディレクトリが含まれています。 Documentsに直接ファイルを保存する場合は、imageサブディレクトリを削除する必要があります。

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

そうしないと、Documentsimageディレクトリを作成する必要があります。


注:スウィフト3でNSDataを使用していない、非常に関連するURL API

do { 
    let fileData = try Data(contentsOf: sourceUrl!) 
    try fileData.write(to: sourceUrl!, options: .atomic) 
... 
を使用することをお勧めします