Изображение, сохраненное в NSDocumentDirectory, исчезает при обновлении приложения из App Store

Изображение сохраняется как следующие коды:

-(NSString *)saveImage:(UIImage *)image withName:(NSString *)name{
    [self createDataPath];
    NSString *filePath = [dataPath stringByAppendingPathComponent:name];
    NSData *imageData = UIImageJPEGRepresentation(image, 1.0f);
    [imageData writeToFile:filePath atomically:YES];
    return filePath;
}

-(void)createDataPath{
    NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
    dataPath = [[[paths objectAtIndex:0]
                stringByAppendingPathComponent:@"MyPhotos"]
            stringByAppendingPathComponent:imageUniqueId];

    /* check for existence of cache directory */
    if ([[NSFileManager defaultManager] fileExistsAtPath:dataPath]) {
        return;
    }

    NSError *error;

    /* create a new cache directory */
    if (![[NSFileManager defaultManager] createDirectoryAtPath:dataPath
                               withIntermediateDirectories:YES
                                                attributes:nil
                                                     error:&error]) {
    //URLCacheAlertWithError(error);
    return;
    }
 }

Насколько я знаю, изображение, сохраненное в NSDocumentDirectory, не будет очищено при обновлении приложения из App Store, но факт в том, что эти изображения исчезли. Что тут происходит?


person lu yuan    schedule 03.04.2013    source источник
comment
Что такое imageUniqueId?   -  person Midhun MP    schedule 03.04.2013
comment
@MidhunMP Случайная строка   -  person lu yuan    schedule 03.04.2013
comment
Как вы получили эти изображения?   -  person Midhun MP    schedule 03.04.2013
comment
@MidhunMP myImage = [UIImage imageWithData: [NSData dataWithContentsOfFile: myImagePath]];   -  person lu yuan    schedule 03.04.2013
comment
Откуда вы взяли myImagePath, ведь в вашем пути содержится случайная строка. Тогда как вы выбрали этот путь?   -  person Midhun MP    schedule 03.04.2013
comment
@MidhunMP путь хранится в основных данных   -  person lu yuan    schedule 03.04.2013
comment
Вы храните полный путь или CoreData?   -  person Marcelo Fabri    schedule 03.04.2013
comment
@luyuan: в этом проблема. Когда вы обновите свое приложение, данные в каталоге документов будут там, но имя папки приложения будет переименовано. Так что ваш код не сработает. Лучше сохранить уникальное имя папки и использовать NSFileManager для поиска данных по этой информации.   -  person Midhun MP    schedule 03.04.2013
comment
Вы уверены, что обновили приложение, не удаляя его? Обновление приложения никогда ничего не удалит, а удаление и загрузка нового приложения удалит все данные.   -  person iphonic    schedule 03.04.2013
comment
@MidhunMP Я попробую ваше решение :)   -  person lu yuan    schedule 03.04.2013
comment
@MidhunMP Спасибо за информацию :)   -  person lu yuan    schedule 03.04.2013
comment
Тогда определенно это изображение, которое вы сохранили под каким-то именем, не существует в вашей базе данных или что-то в этом роде. Вы можете проверить поведение на симуляторе, проверив каталог документов, запустив старый проект, а затем запустив новый проект убедитесь, что идентификатор приложения одинаков в обоих проектах. Всего наилучшего   -  person iphonic    schedule 03.04.2013