pasar - no puedo eliminar fotos de mi iphone
¿Cómo elimino un archivo en el directorio de documentos de mi aplicación? (3)
Con Swift 3, FileManager
tiene un método llamado removeItem(at:)
. removeItem(at:)
tiene la siguiente declaración:
func removeItem(at URL: URL) throws
Elimina el archivo o directorio en la URL especificada.
El fragmento de código a continuación muestra cómo eliminar un archivo usando removeItem(at:)
:
do {
try FileManager.default.removeItem(at: fileUrl)
} catch {
print("Could not delete file: /(error)")
}
Como ejemplo completo, la siguiente implementación de subclase UIViewController
muestra cómo copiar un archivo del paquete de aplicaciones a una URL específica en el directorio de documentos, eliminar un archivo en una URL específica en el directorio de documentos y verificar si existe un archivo en una URL específica en directorio de documentos:
import UIKit
class ViewController: UIViewController {
@IBAction func copyFile(_ sender: UIButton) {
// Get app bundle file url
guard let bundleFileUrl = Bundle.main.url(forResource: "Movie", withExtension: "mov") else { return }
// Create a destination url in document directory for file
guard let documentsDirectory = FileManager.default.urls(for: .documentDirectory, in: .userDomainMask).first else { return }
let documentDirectoryFileUrl = documentsDirectory.appendingPathComponent("Movie.mov")
// Copy bundle file to document directory
if !FileManager.default.fileExists(atPath: documentDirectoryFileUrl.path) {
do {
try FileManager.default.copyItem(at: bundleFileUrl, to: documentDirectoryFileUrl)
} catch {
print("Could not copy file: /(error)")
}
}
}
@IBAction func deleteFile(_ sender: UIButton) {
// Get destination url in document directory for file
guard let documentsDirectory = FileManager.default.urls(for: .documentDirectory, in: .userDomainMask).first else { return }
let documentDirectoryFileUrl = documentsDirectory.appendingPathComponent("Movie.mov")
// Delete file in document directory
if FileManager.default.fileExists(atPath: documentDirectoryFileUrl.path) {
do {
try FileManager.default.removeItem(at: documentDirectoryFileUrl)
} catch {
print("Could not delete file: /(error)")
}
}
}
@IBAction func checkIfFileExist(_ sender: UIButton) {
// Get destination url in document directory for file
guard let documentsDirectory = FileManager.default.urls(for: .documentDirectory, in: .userDomainMask).first else { return }
let outputUrl = documentsDirectory.appendingPathComponent("Movie.mov")
// Print if file exists in document directory or not
FileManager.default.fileExists(atPath: outputUrl.path) ? print("File exists") : print("File does not exist")
}
}
Dado, un archivo de ruta [[self documentsDirectory] stringByAppendingPathComponent:@"myFiles/aFile.txt"]
, ¿Cómo [[self documentsDirectory] stringByAppendingPathComponent:@"myFiles/aFile.txt"]
un archivo en el directorio de documentos de mi aplicación?
NSFileManager es una herramienta muy útil:
[[NSFileManager defaultManager] removeItemAtPath: pathToFile error: &error];
Para Swift 3.xy Xcode 8.x
func removeItemForDocument(itemName:String, fileExtension: String) {
let fileManager = FileManager.default
let NSDocumentDirectory = FileManager.SearchPathDirectory.documentDirectory
let NSUserDomainMask = FileManager.SearchPathDomainMask.userDomainMask
let paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, true)
guard let dirPath = paths.first else {
return
}
let filePath = "/(dirPath)//(itemName)./(fileExtension)"
do {
try fileManager.removeItem(atPath: filePath)
} catch let error as NSError {
print(error.debugDescription)
}}