iPhone / Цель C: Невозможно удалить файл

В моем приложении я позволяю пользователю записывать звуковой клип, а позже, если пользователь выберет, я хочу, чтобы он мог его удалить.

Это код, который я использую :

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];
9
задан tshepang 23 August 2014 в 21:39
поделиться

1 ответ

Путь к файлу в кодировке url кажется мне подозрительным. Я где-то читал, что в наши дни пути к файлам iPhone должны быть представлены в виде URL, но я не думаю, что пробелы должны быть закодированы в url.

Попробуйте удалить %20 из пути и попробовать снова?

.
0
ответ дан 4 December 2019 в 11:03
поделиться