我的iPhone应用程序包含大约500 MB的数据。和应用程序将脱机使用此数据。所以我将文件夹标记为不在iTunes上备份/复制。所以我在下面使用url: https://gist.github.com/1999985
但它表示' NSURLIsExcludedFromBackupKey'未申报。我也尝试使用https://developer.apple.com/library/ios/#qa/qa1719/_index.html 但我总是回归假..
所以请告诉我它将如何运作?
THX
答案 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;
}