Ich möchte ein Bild aus meinem App-Dokumentverzeichnis löschen. Der Code, den ich zum Löschen des Bildes geschrieben habe, lautet:
-(void)removeImage:(NSString *)fileName
{
fileManager = [NSFileManager defaultManager];
paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
documentsPath = [paths objectAtIndex:0];
filePath = [documentsPath stringByAppendingPathComponent:[NSString stringWithFormat:@"%@", fileName]];
[fileManager removeItemAtPath:filePath error:NULL];
UIAlertView *removeSuccessFulAlert=[[UIAlertView alloc]initWithTitle:@"Congratulation:" message:@"Successfully removed" delegate:self cancelButtonTitle:@"Close" otherButtonTitles:nil];
[removeSuccessFulAlert show];
}
Es funktioniert teilweise. Dieser Code löscht eine Datei aus dem Verzeichnis, aber wenn ich nach dem Inhalt im Verzeichnis suche, wird dort immer noch der Bildname angezeigt. Ich möchte diese Datei vollständig aus dem Verzeichnis entfernen. Was muss ich im Code ändern, um dasselbe zu tun? Vielen Dank
contentsOfDirectoryAtPath
(dh hier ist kein Verzeichnis-Caching beteiligt). Sie müssen also einen einfachen Fehler im Spiel haben, der sich beim Betrachten desNSError
Inhalts bemerkbar machen sollte .Antworten:
Ich habe Ihren Code überprüft. Es funktioniert für mich. Überprüfen Sie alle Fehler, die Sie erhalten, indem Sie den unten geänderten Code verwenden
quelle
Swift 3.0:
Dank @Anil Varghese habe ich in Swift 2.0 sehr ähnlichen Code geschrieben:
quelle
Swift 2.0:
quelle
In Swift sowohl 3 als auch 4
oder Diese Methode kann alle lokalen Dateien löschen
quelle
Anstatt den Fehler auf NULL zu setzen, müssen Sie ihn auf NULL setzen
Hier erfahren Sie, ob die Datei tatsächlich gelöscht wird
quelle
Ich möchte meine SQLite-Datenbank aus dem Dokumentverzeichnis löschen. Ich lösche die SQLite-Datenbank erfolgreich durch die folgende Antwort
quelle
quelle
FreeGor-Version auf Swift 3.0 konvertiert
quelle
Sie können das Entfernen Ihrer Datei mit NSFileManager.defaultManager () doppelt schützen. IsDeletableFileAtPath (PathName) Ab sofort MÜSSEN Sie do {} catch {} verwenden, da die alten Fehlermethoden nicht mehr funktionieren. isDeletableFileAtPath () ist kein "throw" (dh "public func removeItemAtPath (path: String) throw"), daher wird der do ... catch nicht benötigt
quelle
Wenn Sie auf moderne API-Weise interessiert sind, NSSearchPath vermeiden und Dateien im Dokumentenverzeichnis filtern, können Sie vor dem Löschen Folgendes tun:
quelle