从应用程序备份中排除文件

时间:2010-07-20 17:04:32

标签: iphone objective-c itunes

有没有办法将应用程序包中的某些文件排除在备份到用户的计算机之外?我有一个照片浏览应用程序,允许您在本地存储照片/视频,当用户同步他们的设备和应用程序备份时,它需要很长时间,因为它备份所有本地存储的照片/视频。是否有一个不会备份的目录(/ tmp /?)?

4 个答案:

答案 0 :(得分:5)

是的,您必须将不想备份的文件放入Caches目录。路径可以获得:

NSArray *paths = NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES); 
NSString *cachesPath = [paths objectAtIndex:0]; 

答案 1 :(得分:4)

iOS Applocation Programming Guide: A Few Important Application Directories讨论备份哪些文件夹,哪些文件夹不备份。您应该使用<Application_Home>/Library/Caches来存储不需要备份的持久数据。

iPhone Application Programming Guide: Getting Paths to Application Directories显示如何使用带有NSCachesDirectory参数的NSSearchPathForDirectoriesInDomains来获取该文件夹的路径。

答案 2 :(得分:3)

/ Library / Caches不保证在应用程序更新期间保留。这可能是您的媒体文件的问题。

答案 3 :(得分:0)

Apple docs在iOS 5.1及更高版本中建议这样做:

NSURL *storeUrl = [NSURL fileURLWithPath:[[NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) objectAtIndex:0] stringByAppendingPathComponent:@"your_file"]];

NSError *error;
[storeUrl setResourceValue:[NSNumber numberWithBool:YES] forKey:NSURLIsExcludedFromBackupKey error:&error];

if (error) {
    NSLog(@"couldn't exclude database from backups: %@", [error localizedDescription]);
}