web-dev-qa-db-ja.com

FileManager.default.removeItemがファイルを削除しない

FileManager.default.removeItemを使用してドキュメントディレクトリからファイルを削除しようとしていますが、シミュレータでファイルを削除していません。これが私のコードです:

if let dir = fileManager.urls(for: .documentDirectory, in: .userDomainMask).first {
            do{
                let path = dir.appendingPathComponent(file).absoluteString
                do{
                    try FileManager.default.removeItem(atPath:path)
                }catch{
                    print(error)
                }
            }
        }

しかし、私はいつも失敗します。なぜ失敗するのか知っている人はいますか?

8
user2924482

あなたはこのように書くことができます:

var filemanager = FileManager.default
let documentsPath = NSSearchPathForDirectoriesInDomains(.documentDirectory,.userDomainMask,true)[0] as NSString
let destinationPath = documentsPath.appendingPathComponent("Filename.jpg")
try! filemanager.removeItem(atPath: destinationPath)
8

absoluteStringは間違ったAPIであり、file://スキームの正しいプロパティはpathです。

最善の解決策は、URL関連のAPIを使用することです

let fileURL = dir.appendingPathComponent(file)

.。

try FileManager.default.removeItem(at: fileURL)
7
vadian