В моем приложении я позволяю пользователю записывать аудиоклип, а затем, если пользователь выбирает, я хочу, чтобы он мог удалить его.
Это код, который я использую:
NSFileManager *fileManager = [NSFileManager defaultManager];
NSError *error;
NSLog(@"File exists: %d", [fileManager fileExistsAtPath:path]);
NSLog(@"Is deletable file at path: %d", [fileManager isDeletableFileAtPath:path]);
[fileManager removeItemAtPath:path error:&error];
if (error != nil)
{
NSLog(@"Error: %@", error);
NSLog(@"Path to file: %@", path);
}
Проблема в том, что fileExistsAtPath
и isDeletableFileAtPath
возвращают ноль, а removeItemAtPath
не работает и выдает эту ошибку,
Ошибка: ошибка Домен = NSCocoaErrorDomain Code = 4 UserInfo = 0x391b7f0 "Операция не может быть завершена. (Ошибка какао 4.)"
Путь имеет такую форму:
/Users/andrei/Library/Application%20Support/iPhone%20Simulator/User/Applications/5472B318-FA57-4F8D-AD91-7E06E9609215/Documents/1280913694.caf
Там есть файл с именем 1280913694.caf
, но он не забирает его. Это как-то связано с тем, каким образом должен быть представлен путь?
Путь работает при воспроизведении аудиофайла с AVAudioPlayer
.
Я также изменил %@
на %d
для fileExistsAtPath
и isDeletableFileAtPath
, и ответ равен 0, что, я полагаю, означает ЛОЖЬ.
Имя файла хранится в базе данных, и путь к файлу извлекается следующим способом:
-(NSString *)returnFullPathToDirectory
{
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0];
return documentsDirectory;
}
После того как я получу это значение, я использую его в следующем коде
NSString *filePath = [documentsDirectory stringByAppendingPathComponent:fileName];