Use NSURLIsExcludedFromBackupKey without crashing on iOS 5.0

前端 未结 6 1274
我在风中等你
我在风中等你 2020-12-02 15:55

The check for availability seems to be working fine but I can\'t seem to set the NSURLIsExcludedFromBackupKey key without getting this crash on launch:

6条回答
  •  情话喂你
    2020-12-02 16:43

    Here's code for iOS <= 5.0.1 and >= 5.1 and includes the migration technique that @Cocoanetics mentioned.

    - (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];
        }
    }
    

提交回复
热议问题