2

我的 iPhone 应用程序包含大约 500 MB 数据。并且应用程序将离线使用这些数据。所以我将文件夹标记为不在 iTunes 上备份/复制。所以我使用以下网址: https ://gist.github.com/1999985

但它说“NSURLIsExcludedFromBackupKey”未声明。我也尝试使用https://developer.apple.com/library/ios/#qa/qa1719/_index.html 但我总是返回 false ..

所以请让我知道它是如何工作的??

谢谢

4

2 回答 2

5

NSURLIsExcludedFromBackupKey应该可以在 5.1+ SDK 上编译。
由于该密钥不适用于 5.0,因此以下代码段可以作为一种解决方法。

if (SYSTEM_VERSION_LESS_THAN_OR_EQUAL_TO(@"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;
}          
if (SYSTEM_VERSION_GREATER_THAN_OR_EQUAL_TO(@"5.1"))
{
    NSError *error = nil;
    //[URL setResourceValue:[NSNumber numberWithBool:YES] forKey:NSURLIsExcludedFromBackupKey error:&error];
    [URL setResourceValue:[NSNumber numberWithBool:YES] forKey:@"NSURLIsExcludedFromBackupKey" error:&error];
    return error == nil;
}
于 2012-05-24T18:48:46.687 回答
2

我在使用“SYSTEM_VERSION_LESS_THAN_OR_EQUAL_TO”检查操作系统版本时遇到错误,我的应用程序是在旧操作系统工具中开发的。所以我改成这个,替换为“SYSTEM_VERSION_LESS_THAN_OR_EQUAL_TO”

double currSysVer =[[[UIDevice currentDevice] systemVersion] doubleValue];
if (currSysVer>=5.1) {
    NSError *error = nil;
    //[URL setResourceValue:[NSNumber numberWithBool:YES] forKey:NSURLIsExcludedFromBackupKey error:&error];
    [URL setResourceValue:[NSNumber numberWithBool:YES] forKey:@"NSURLIsExcludedFromBackupKey" error:&error];
    return error == nil;
}else{

    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;

}
于 2012-10-05T17:32:21.957 回答