【问题标题】:Disable backup of documents folder and all its sub folders on icloud?禁用 icloud 上文档文件夹及其所有子文件夹的备份?
【发布时间】:2015-01-19 07:34:03
【问题描述】:

我有一个已经在运行的企业应用程序,它在文档文件夹中存储了大量文档。我希望禁用 Documents 文件夹中所有这些文档和文件夹的 iCloud 备份。 问题是文件夹内的内容不断动态变化和添加的想法 kCFURLIsExcludedFromBackupKey for each files 听起来有点困难,因为我的代码中有多个类可以写入文档目录。

有什么方法可以禁用整个文档文件夹及其子文件夹的上传。

【问题讨论】:

  • 您是否尝试将kCFURLIsExcludedFromBackupKey 应用于整个 Documents 目录?
  • this answer怎么样

标签: ios objective-c iphone icloud nsfilemanager


【解决方案1】:

在您的应用程序的 appDelegate 中使用以下方法

 - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions

添加此代码

    NSArray *urlArray = [[NSFileManager defaultManager] URLsForDirectory: NSDocumentDirectory inDomains: NSUserDomainMask];
    NSURL *documentsUrl = [urlArray firstObject];

    NSError *error = nil;
    BOOL success = [documentsUrl setResourceValue: [NSNumber numberWithBool: YES]
                                  forKey: NSURLIsExcludedFromBackupKey error: &error];
    if(!success){
        NSLog(@"Error in disabling %@ from backup %@", [documentsUrl lastPathComponent], error);
    }

【讨论】:

    【解决方案2】:

    您可以将kCFURLIsExcludedFromBackupKey(或NSURLIsExcludedFromBackupKey)放入整个 Documents 目录,就像对单个文件一样。但是,如果您不想备份任何文件,您可能需要重新考虑它们应该去哪里。 Documents 目录仅用于用户数据。如果文件存储在您自己的服务器上,它们可能应该进入Caches,因为它们可以很容易地再次下载。如果文件只需要很短的时间,他们应该去tmp/

    This 是 Apple 关于将应用文件放在何处的文档。

    【讨论】:

      【解决方案3】:
      NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
      NSString *directory = paths[0];
      NSFileManager *fileManager = [NSFileManager defaultManager];
      NSURL *url = [NSURL fileURLWithPath:directory];
      
      NSError *error;
      // exclude from iCloud backup
      if ([url setResourceValue:@(YES) forKey:NSURLIsExcludedFromBackupKey error:&error] == NO) {
              NSLog(@"Error: Unable to exclude directory from backup: %@", error);
      }
      

      您可以在首次安装时调用一次。它将应用于子文件夹和文件。

      【讨论】:

        【解决方案4】:

        也许文件是动态变化的,因为它们是从服务器或类似服务器定期更新的?如果是这样,那么答案是将文件存储从<Application_Home>/Documents 目录移动到<Application_Home>/Library/Caches 目录。这些文件将不会被备份。当然,这仅适用于可以在将来重新下载或重新创建数据(如果需要)的情况。

        有关概述,请参阅此 Apple 文档: https://developer.apple.com/icloud/documentation/data-storage/index.html

        【讨论】:

        • 您也可以使用 /tmp 文件夹
        猜你喜欢
        • 2013-04-17
        • 1970-01-01
        • 2015-02-16
        • 2015-03-29
        • 2017-04-06
        • 2019-06-19
        • 1970-01-01
        • 2012-07-21
        • 1970-01-01
        相关资源
        最近更新 更多