为什么我的应用程序在使用此代码排除iCloud备份文件后仍然被拒绝?

我已经添加了下面的代码,从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传入:

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

任何人都可以提出我的错误在哪里?

问题在于你传入的URL。

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

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

要解决这个问题,你需要把它存储在/ Library而不是/ Documents中

所以你的url是

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

自从iCloud实施以来,将不可同步的数据或任何外部数据存储在库文件夹中是苹果新的首选项

代码对我看起来很好。

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

你可以通过这个terminal命令来实现 – > ls -al – @