Iphone 防止备份到iCloud,以下代码正确吗?

Iphone 防止备份到iCloud,以下代码正确吗?,iphone,ios,backup,icloud,home-directory,Iphone,Ios,Backup,Icloud,Home Directory,我正在下载许多音频和视频文件,并将它们存储在我的主目录中。 现在我想“防止备份到iCloud” 因此,我为每个文件的url添加了以下代码 - (BOOL)addSkipBackupAttributeToItemAtURL:(NSURL *)URL { const char* filePath = [[URL path] fileSystemRepresentation]; const char* attrName = "com.apple.MobileBackup";

我正在下载许多音频和视频文件,并将它们存储在我的主目录中。 现在我想“防止备份到iCloud” 因此,我为每个文件的url添加了以下代码

- (BOOL)addSkipBackupAttributeToItemAtURL:(NSURL *)URL

{

    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;

}
谁能告诉我这段代码适用于所有IOS版本吗。 如果没有,请建议正确的方法。 多谢各位

谁能告诉我这段代码适用于所有IOS版本吗

不,没有。苹果在其声明中明确表示

新的“不备份”属性将仅由iOS 5.0.1或更高版本使用

它们还告诉您需要为较旧的iOS版本执行哪些操作:

在iOS 5.0及更早版本上,应用程序需要将数据存储在
/Library/Caches
中,以避免备份数据。由于此属性在较旧的系统上被忽略,因此您需要确保您的应用程序在您的应用程序支持的所有iOS版本上都符合iOS数据存储指南


您可以将此代码用于iOS 5.1或更高版本

- (BOOL)addSkipBackupAttributeToItemAtPath:(NSString *)filePathString {
    NSURL *fileURL = [NSURL fileURLWithPath:filePathString];

    assert([[NSFileManager defaultManager] fileExistsAtPath: [fileURL path]]);

    NSError *error = nil;

    BOOL success = [fileURL setResourceValue:[NSNumber numberWithBool: YES]
                                  forKey: NSURLIsExcludedFromBackupKey
                                 error: &error];
    return success;
}

如果您有一个可更新的数据库,这似乎是一个难题,因为存储在缓存中的数据库是不可更新的!我想知道如何在文件而不是url上添加此属性。