2013-07-09 2 views
1

В моем приложении я сохранил видео и фотографии в каталоге документов и в хранилище URL-адресов в каталоге sqlite. При обновлении (Обновление) приложения iPhone все документы и видеофайлы документов удаляются. Но другие параметры, хранящиеся в sqlite, не удаляются. Как сохранить файлы при обновлении приложения?При обновлении приложения все локальные файлы удаляются в iPhone.

- (BOOL) saveImageToDocumentDirectory: (UIImage *) imgToBeSaved { BOOL flag = NO;

strPhotourl=nil; 

NSData* imgData = UIImageJPEGRepresentation(imgToBeSaved, 1.0); 

// NSData * imgData1 = UIImagePNGRepresentation (imgToBeSaved);

// Create a new UUID 
CFUUIDRef uuidObj = CFUUIDCreate(nil); 

// Get the string representation of the UUID 
NSString *strImageName = (__bridge NSString*)CFUUIDCreateString(nil, uuidObj); 

CFRelease(uuidObj); 

//Call Function to save image to document directory 

NSArray* arrAllDirectories = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); 

NSString* strDocumentDirectory = [arrAllDirectories objectAtIndex:0]; 

NSFileManager* fileManager = [NSFileManager defaultManager]; 

NSString *fullPath = [strDocumentDirectory stringByAppendingPathComponent:[strImageName stringByAppendingString:@".png"]]; 

strPhotourl=fullPath ;// strPhotourl store in sqlite db table two show images in tableview 

// NSLog(@"Image in strphotolocation==%@",imagePath); 

// NSLog (@ "полный путь ---% @", fullPath);

if(![fileManager fileExistsAtPath:fullPath]) 
    flag =  [fileManager createFileAtPath:fullPath contents:imgData attributes:nil]; 
else 
    flag = NO; 
return flag; 

}

+2

Это не должно произойти. – trojanfoe

+0

Как вы определили, что файлы удалены? И где именно хранятся ваши файлы? В iOS есть несколько специальных каталогов для разных целей. –

+0

@trojanfoe, я вставляю некоторые данные в sqlite db, например, сохраняю изображения в каталоге документов и сохраняю url в таблице sqlite db. Поэтому, когда я обновляю версию приложения, изображения не отображаются с использованием URL-адреса изображений из каталога документов –

ответ

1

Не сохраняйте весь путь в sqlite, просто сохраните имя файла, которое вы храните в локальном состоянии, при извлечении, получите текущий путь к каталогу и добавьте имя файла из sqlite. Это также поможет вам при обновлении вашего приложения.

+0

Или, по крайней мере, имя файла * relative * в известную (но динамически определенную) директорию. – trojanfoe

+0

@ wesley очень очень большое спасибо, мои проблемы решаются с помощью предложения ur –

4

Причина не потому, что какие-либо файлы были удалены, а так как папка приложение IOS находится в действительно изменяется во время обновления. Папка, в которой хранится ваше приложение, называется GUID, и это может измениться при обновлении.

Вы не должны хранить полный URL/PATH для любых файлов в папке «Документы», так как это не гарантируется после обновления.

Файлы, сохраненные во время App Обновления

Когда пользователь загружает обновления приложения, ITunes устанавливает обновление в новом каталоге приложения. Затем он удаляет файлы данных из старой установки в новое приложение перед удалением старой установки. Файлы в следующих каталогов гарантированно будут сохранены в процессе обновления:

  • Application_Home/Документы
  • Application_Home/Библиотека

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

https://developer.apple.com/library/ios/#DOCUMENTATION/iPhone/Conceptual/iPhoneOSProgrammingGuide/PerformanceTuning/PerformanceTuning.html

Если у вас уже есть приложение развернутое на телефонах пользователей, то, что вы могли бы сделать это, когда вы читаете URL из SQLite, снимите ведущий путь (например:/вар/мобильный/Применение/--- guid ---/Documents), а затем повторно сохраните запись перед ее использованием.

+0

Ур ответ также приемлемый Так спасибо за помощь –

+0

Кстати, я заметил, что с iOS 8 изменилась структура папок. Поэтому не полагайтесь на структуру под GUID. См. Https://developer.apple.com/library/ios/technotes/tn2406/_index.html – peterept

Смежные вопросы