1

我添加了以下代码以从 iCloud 备份中排除文件,但我的应用程序仍然被拒绝:

   - (BOOL)addSkipBackupAttributeToItemAtURL:(NSURL *)URL
{
    if (&NSURLIsExcludedFromBackupKey == nil) { // iOS <= 5.0.1
        const char* filePath = [[URL path] fileSystemRepresentation];

        const char* attrName = "com.apple.MobileBackup";
        u_int8_t attrValue = 1;

        int result = setxattr(filePath, attrName, &attrValue, sizeof(attrValue), 0, 0);
        return result == 0;
    } else { // iOS >= 5.1


        NSLog(@"%d",[URL setResourceValue:[NSNumber numberWithBool:YES] forKey:NSURLIsExcludedFromBackupKey error:nil]);
        return [URL setResourceValue:[NSNumber numberWithBool:YES] forKey:NSURLIsExcludedFromBackupKey error:nil];
    }
}

在模拟器的情况下,我将以下 url 作为 NSURL 传递:

file:///Users/TEST/Library/Application%20Support/iPhone%20Simulator/5.1/Applications/62854BAB-AB51-4771-895F-28C61983A7AC/Documents/MyFolder”

有人可以建议我的错误在哪里吗?

4

2 回答 2

3

代码对我来说看起来不错。

您确定所有文件/文件夹都正确设置了标志。

您可以通过此终端命令执行此操作 -> ls -al -@

于 2012-05-14T18:53:31.123 回答
2

问题在于您传入的 URL。

即使您将数据存储在文件夹中,该数据仍然是两件事

  1. 在文档文件夹中,因此它将被同步
  2. 该文件夹与您的应用程序相关联

要解决此问题,您需要将其存储在 /Library 而不是 /Documents

所以你的网址是

file : ///Users/TEST/Library/Application%20Support/iPhone%20Simulator/5.1/Applications/62854BAB-AB51-4771-895F-28C61983A7AC/Library/MyFolder

自实施 iCloud 以来,Apple 的新偏好是在 Library 文件夹中存储不可同步的数据或任何外部数据

于 2012-05-14T23:17:20.170 回答