はじめに
前回の記事でFileManagerを使って端末に動画や音声などを追加する方法について書きました。ここではそれらを削除する方法について書きます。
解決できるかもしれないエラー
Domain=NSCocoaErrorDomain Code=4 "” couldn’t be removed." UserInfo={NSUserStringVariant=(
Remove
), NSFilePath=/var/mobile/Containers/Data/Application/EB92E676-C1F0-4B9A-8D82-D86D7186B2F3/Documents/dfg, NSUnderlyingError=0x2814ded00 {Error Domain=NSPOSIXErrorDomain Code=2 "No such file or directory"}}
目標
iOS App
├── Documents --- test.txt //ここに追加されたファイルやフォルダを削除する
├── Library
│ ├── Caches
│ └── Preferences
└── tmp
ソースコード
func removeItem(_ itemName: String) {
let fileManager = FileManager.default
var pathString = NSSearchPathForDirectoriesInDomains(.documentDirectory, .userDomainMask, true)[0]
if !fileManager.fileExists(atPath: pathString + "/" + itemName) {
print("指定されたファイルまたはフォルダが存在しない")
return
}
pathString = "file://" + pathString + "/" + itemName
guard let path = URL(string: pathString) else { return }
do {
try fileManager.removeItem(at: path)
print("成功した")
} catch let error {
print("失敗した\(error)")
}
}
流れ
pathString
でDocumentsまでのパスを用意し、fileExists
を使ってDocumentsの先に引数として入力されたフォルダまたはファイルが存在するかチェックします。(指定されたアイテムが存在しない場合のエラーは13行目で拾ってくれるのでここはなくても可。)
その後パスを変更し、URL型に変換し、removeItem
を使って削除します。