【发布时间】:2011-03-18 13:45:39
【问题描述】:
有没有办法排除应用程序包中的某些文件备份到用户的计算机?我有一个照片浏览应用程序,它允许您在本地存储照片/视频,当用户同步他们的设备并且应用程序被备份时,它需要很长时间,因为它也备份了所有本地存储的照片/视频。是否有可能不会备份的目录 (/tmp/?)?
【问题讨论】:
标签: iphone objective-c itunes
有没有办法排除应用程序包中的某些文件备份到用户的计算机?我有一个照片浏览应用程序,它允许您在本地存储照片/视频,当用户同步他们的设备并且应用程序被备份时,它需要很长时间,因为它也备份了所有本地存储的照片/视频。是否有可能不会备份的目录 (/tmp/?)?
【问题讨论】:
标签: iphone objective-c itunes
是的,您必须将不想备份的文件放入 Caches 目录。可获取路径:
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES);
NSString *cachesPath = [paths objectAtIndex:0];
【讨论】:
iOS Applocation Programming Guide: A Few Important Application Directories 讨论备份了哪些文件夹,哪些没有备份。您应该使用<Application_Home>/Library/Caches 来存储不需要备份的持久数据。
iPhone Application Programming Guide: Getting Paths to Application Directories 展示了如何使用带有NSCachesDirectory 参数的NSSearchPathForDirectoriesInDomains 获取该文件夹的路径。
【讨论】:
/Library/Caches 不保证在应用程序更新期间保留。这可能是您的媒体文件的问题。
【讨论】:
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]);
}
【讨论】: