#iphone #objective-c #xcode #nsfilemanager
#iPhone #цель-c #xcode #nsfilemanager
Вопрос:
В моей среде тестирования приложений для iPhone я читаю изображения в формате .png из папки с именем ChineseCharTest в папке ресурсов моего проекта. Я заметил, что если я изменил содержимое этой папки для запуска нового теста с другими изображениями, старые изображения не удалялись из памяти приложения. Я пытаюсь удалять их каждый раз при запуске теста, чтобы считываемые изображения были самыми последними. Вот код, который я сейчас использую:
NSError *err;
NSFileManager *fileManager = [NSFileManager defaultManager];
NSString* resources_path = [[[NSBundle mainBundle] resourcePath] stringByAppendingString:@"/ChineseCharTest"];
NSArray *prev_test_contents = [fileManager contentsOfDirectoryAtPath:resources_path error:nil];
NSEnumerator *e = [prev_test_contents objectEnumerator];
NSString *png_filename;
NSString *extension = @"png";
// Remove previous files with .png extension from ChineseCharTest folder
while ((png_filename = [e nextObject])) {
if ([[png_filename pathExtension] isEqualToString:extension]) {
BOOL success = [fileManager removeItemAtPath:[resources_path stringByAppendingPathComponent:png_filename] error:amp;err];
if (!success) {
NSLog(@"Error removing file: %@", [err localizedDescription]);
}
}
}
Изображения из предыдущего запуска приложения не удаляются. Ошибка, возвращаемая при каждой попытке, является, по-видимому, распространенной ошибкой Cocoa 513: операция не может быть завершена. Кто-нибудь знает, что я делаю неправильно, или другой способ сделать это?
Большое спасибо.
Ответ №1:
Файлы в пакете вашего приложения доступны только для чтения, и любая попытка удалить или изменить их из iOS завершится неудачей.
Если вы на самом деле говорите о перестройке своего приложения с использованием разных ресурсов изображений и обнаруживаете, что старые все еще находятся в пакете приложений на вашем тестовом устройстве, вам нужно будет очистить свой проект, удалить приложение с вашего тестового устройства, а затем переустановить его.