2016-10-16 13 views
0

ここで何が間違っていますか? すべて私は与えられたファイルを削除しようとしています。すべてdocumentationexamples私はこれが動作するはずです。URLを削除してもすぐには動作しません3

func deleteThisFile(fileToDelete: String) { 
    let tempLocalDir = FileManager.default.urls(for: .documentDirectory, in: .userDomainMask).first 
    do { 
     let directoryContents = try FileManager.default.contentsOfDirectory(at: tempLocalDir!, includingPropertiesForKeys: nil, options: []) 
     let tempList = directoryContents.filter{ $0.absoluteString.contains(fileToDelete) } 

     //tried these things: 
     try FileManager.removeItem(tempList.first) // Argument labels '(_:)' do not match any available overloads 
     /* 
     * try FileManager.removeItem(at: tempList.first!) // Ambiguous reference to member 'removeItem(atPath:)' 
     * 
     * try FileManager.removeItem(atPath: (tempList.first?.absoluteString)!) // Ambiguous reference to member 'removeItem(atPath:)' 
     */ 

    } catch let error as NSError { 
     print(error.localizedDescription) 
    } 
} 

コメントしていないのは、入力時にFileManager.removeItemの自動入力を求めるものです。

あなたがNSFileManagerのインスタンスメソッドであるremoveItem(at:)を使用する必要がありスウィフト3では

答えて

1

素晴らしいだろう間違っているものを上の任意の明確化。そして、あなたはNSFileManagerに引き渡す前にオプションのラップを解除する必要があります。

if let url = tempList.first { 
    try FileManager.default.removeItem(at: url) 
} 
+0

なぜ「.default」が必要ですか?なぜなら、.defaultが必要な理由を理解できないからです。 – brw59

+0

'removeItem(at:)'を呼び出すには、 'NSFileManager'または' FileManager'のインスタンスが必要なので、私は感謝しています。そのシングルトンを使用する代わりに、新しい 'FileManager'をインスタンス化することもできますが、常にそのメソッドを呼び出すインスタンスが必要です。 –

+0

ああ、それは意味がある、ありがとう – brw59

関連する問題