'NSURLIsExcludedFromBackupKey'未声明

时间:2012-04-27 18:28:39

标签: iphone ios5 backup

我的iPhone应用程序包含大约500 MB的数据。和应用程序将脱机使用此数据。所以我将文件夹标记为不在iTunes上备份/复制。所以我在下面使用url: https://gist.github.com/1999985

但它表示' NSURLIsExcludedFromBackupKey'未申报。我也尝试使用https://developer.apple.com/library/ios/#qa/qa1719/_index.html 但我总是回归假..

所以请告诉我它将如何运作?

THX

2 个答案:

答案 0 :(得分: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;
}

答案 1 :(得分: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;

}