Я хочу удалить изображение из каталога документов моего приложения. Код, который я написал для удаления изображения:
-(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];
}
Работает частично. Этот код удаляет файл из каталога, но когда я проверяю содержимое в каталоге, он все еще показывает имя изображения. Я хочу полностью удалить этот файл из каталога. Что мне нужно изменить в коде, чтобы сделать то же самое? Спасибо
contentsOfDirectoryAtPath
(т.е. здесь не задействовано кеширование каталогов). Таким образом, у вас должна быть какая-то простая ошибка в игре, которая должна стать очевидной, когда вы посмотрите наNSError
содержимое.Ответы:
Я проверил ваш код. У меня это работает. Проверьте любую ошибку, которую вы получаете, используя измененный код ниже
источник
Swift 3.0:
Благодаря @Anil Varghese я написал очень похожий код на Swift 2.0:
источник
Swift 2.0:
источник
В Swift и 3, и 4
или Этот метод может удалить весь локальный файл
источник
Вместо того, чтобы устанавливать для ошибки значение NULL, установите для нее значение
это скажет вам, действительно ли он удаляет файл
источник
Я хочу удалить свой sqlite db из каталога документов. Я успешно удаляю sqlite db, отвечая ниже
источник
источник
Версия FreeGor преобразована в Swift 3.0
источник
Вы можете дважды защитить удаление вашего файла с помощью NSFileManager.defaultManager (). IsDeletableFileAtPath (PathName) На данный момент вы ДОЛЖНЫ использовать do {} catch {}, поскольку старые методы обработки ошибок больше не работают. isDeletableFileAtPath () не является "throws" (то есть "public func removeItemAtPath (path: String) throws"), поэтому ему не требуется do ... catch
источник
Если вас интересует современный API-интерфейс, избегая NSSearchPath и фильтруя файлы в каталоге документов, перед удалением вы можете сделать следующее:
источник