在我的应用程序中,我已将文档目录中的视频和照片以及照片和视频保存在sqlite中的路径存储中。在更新(升级)iPhone应用程序时,所有文档目录照片和视频都将被删除。但是存储在sqlite中的其他参数未被删除。如何在更新应用程序时保留文件?
- (BOOL)saveImageToDocumentDirectory:(的UIImage *)imgToBeSaved { BOOL标志= 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 ---%@”,fullPath);
if(![fileManager fileExistsAtPath:fullPath])
flag = [fileManager createFileAtPath:fullPath contents:imgData attributes:nil];
else
flag = NO;
return flag;
}
答案 0 :(得分:5)
原因不是因为删除了任何文件,而是因为升级过程中iOS应用程序所在的文件夹确实会更改。存储应用程序的文件夹是使用GUID命名的,升级时可能会更改。
您不应将完整的URL / PATH存储到Documents文件夹中的任何文件,因为升级后无法保证这一点。
在应用更新期间保存的文件
当用户下载应用更新时, iTunes将更新安装在新的app目录中。它然后移动 用户从旧安装到新应用程序的数据文件 删除旧安装之前的目录。文件如下 保证在更新过程中保留目录:
- APPLICATION_HOME /文件
- Application_Home / Library
虽然是文件 在其他用户目录中也可以移动,你不应该依赖 他们在更新后出现。
如果您已经在用户手机上部署了应用程序,那么您可以做的是当您从sqlite读取网址时,删除主要路径(例如:/ var / mobile / Applications / --- guid --- /文件)然后在使用之前重新保存该条目。
答案 1 :(得分:1)
不要将整个路径保存到sqlite中,只需保存存储在本地的文件名,这样在获取时,获取当前目录路径并从sqlite追加fileName。这也将在您升级应用时解决。