NSURLIsExcludedFromBackupKey解决方法?

时间:2012-06-19 17:39:51

标签: ios backup icloud skip

目前我有一个看起来像这样的方法来阻止iCloud备份文件:

- (BOOL)addSkipBackupAttributeToItemAtURL:(NSURL *)URL
{
    const char* filePath = [[URL path] fileSystemRepresentation];
    const char* attrName = "com.apple.MobileBackup";
    if (&NSURLIsExcludedFromBackupKey == nil) {
        // iOS 5.0.1 and lower
        u_int8_t attrValue = 1;
        int result = setxattr(filePath, attrName, &attrValue, sizeof(attrValue), 0, 0);
        return result == 0;
    }
    else {
        // First try and remove the extended attribute if it is present
        int result = getxattr(filePath, attrName, NULL, sizeof(u_int8_t), 0, 0);
        if (result != -1) {
            // The attribute exists, we need to remove it
            int removeResult = removexattr(filePath, attrName, 0);
            if (removeResult == 0) {
                NSLog(@"Removed extended attribute on file %@", URL);
            }
        }

        // Set the new key
        return [URL setResourceValue:[NSNumber numberWithBool:YES] forKey:NSURLIsExcludedFromBackupKey error:nil];
    }
}

问题是,它是否使用iOS 5.1及更高版本的API:NSURLIsExcludedFromBackupKey

在支持5.1下的设备时,这对我来说是一个问题。即使下面的代码说它支持5.1以下的设备,它有时会崩溃并且不一致。

那么,有没有办法阻止iCloud备份文件而不使用NSURLIsExcludedFromBackupKey API?

谢谢!

0 个答案:

没有答案