【问题标题】:Exclude files from application backup从应用程序备份中排除文件
【发布时间】:2011-03-18 13:45:39
【问题描述】:

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

【问题讨论】:

    标签: iphone objective-c itunes


    【解决方案1】:

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

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

    【讨论】:

    • 虽然这是在您的情况下使用的方法@Shizam,但不要盲目地这样做。在这样做之前阅读@Franci Penov 的答案中的链接。了解影响您可以使用的每个目录的角色和问题至关重要。
    • 谢谢,这太好了,我正在阅读这些文档,以便就存储东西的位置做出最佳决定。将其标记为第一条的答案。
    【解决方案2】:

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

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

    【讨论】:

    • 感谢 Franci 提供指向 doco 的链接。
    【解决方案3】:

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

    【讨论】:

      【解决方案4】:

      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]);
      }
      

      【讨论】:

        猜你喜欢
        • 2012-08-19
        • 2015-12-16
        • 2013-01-22
        • 1970-01-01
        • 1970-01-01
        • 2014-10-20
        • 1970-01-01
        • 1970-01-01
        • 2012-11-20
        相关资源
        最近更新 更多