В моем приложении я позволяю пользователю записывать звуковой клип, а позже, если пользователь выберет, я хочу, чтобы он мог его удалить.
Это код, который я использую :
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
возвращают значение null, а removeItemAtPath
не работает и вызывает эту ошибку,
Ошибка: Ошибка Домен = NSCocoaErrorDomain Code = 4 UserInfo = 0x391b7f0 "Операция coul не будет завершено. (Ошибка какао 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];
Путь к файлу в кодировке url кажется мне подозрительным. Я где-то читал, что в наши дни пути к файлам iPhone должны быть представлены в виде URL, но я не думаю, что пробелы должны быть закодированы в url.
Попробуйте удалить %20 из пути и попробовать снова?
.