Когда очищается кеш приложения iPhone?

Я работаю над приложением, которое позволяет пользователям записывать голос (среди прочего) в каталог «Документы» приложения. Но когда я записываю голос, я записываю в каталог caches приложения, а затем, после того как пользователь говорит: «Хорошо, сохраните это», я копирую его в каталог Documents. Пока все это работает. Но если я попытаюсь удалить файл данных в кеше или когда я попытаюсь его переместить, у меня возникнут проблемы.

Итак, мой вопрос: я просто оставлю данные в кеше, чтобы iOS обработала их, или мне нужно вручную удалить файлы в кеше. Если да, то как бы я это сделал. Это код, который у меня есть до сих пор (который не работает)

    NSFileManager *fm = [NSFileManager defaultManager];
    NSString *directory = [NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES) lastObject];
    NSError *error = nil;
    BOOL success = [fm removeItemAtPath:[NSString stringWithFormat:@"%@%@", directory, currentEntry.audioFileURL] error:&error];
    if (!success || error) {
        // it failed.
        NSLog(@"it failed to delete!!! %@ %@", error, [error userInfo]);
    } else {
        NSLog(@"Deleted... yipee... !!!");
    }

person hdsenevi    schedule 23.05.2011    source источник
comment
Данные в $(APP_WRAPPER)/Library/Caches не копируются и не восстанавливаются, но и не извлекаются автоматически. Когда это не удается, какую ошибку вы получаете?   -  person Chris Parker    schedule 23.05.2011
comment
Привет, Крис, оказывается, я использую неправильный путь. Удалось исправить. Спасибо за помощь.   -  person hdsenevi    schedule 24.05.2011


Ответы (1)


Я думаю, проблема в том, что ваш путь неверен. Всегда используйте

- (NSString *)stringByAppendingPathComponent:(NSString *)aString

метод NSString.

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

UPD: Другое дело, что NSCachesDirectory фактически никогда не очищается. Используйте NSTemporaryDirectory(), если вы хотите автоматическую очистку.

person Anton    schedule 23.05.2011
comment
Кажется, ты был прав. Путь, который я устанавливаю, неверен. Мне удалось это сделать (удалить файл) с текущим кодом, который у меня есть. Не использовал stringByAppendingPathComponent: для этого экземпляра. Спасибо за упоминание NSTemporaryDirectory(). Я это проверю. Большое спасибо еще раз. Ваше здоровье - person hdsenevi; 24.05.2011