我正在下载许多音频和视频文件,并将它们存储在我的Home目录中。现在我想“防止备份到iCloud”,所以我为我的每个文件的url添加了以下代码
- (BOOL)addSkipBackupAttributeToItemAtURL:(NSURL *)URL
{
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;
}
谁能告诉我,这个代码会工作在所有的IOS版本。如果不是,请建议正确的方法。谢谢
发布于 2011-12-19 19:28:45
谁能告诉我,这个代码是否适用于所有IOS版本。
不,没有。苹果公司在其Technical Note introducing the "do not backup" flag中明确指出
只有iOS 5.0.1或更高版本才能使用新的“不备份”属性。
它们还告诉您对于较旧的iOS版本需要执行的操作:
在iOS 5.0及更早版本上,应用程序需要将其数据存储在
<Application_Home>/Library/Caches
中,以避免备份数据。由于此属性在较旧的系统上会被忽略,因此您需要确保您的应用程序符合您的应用程序支持的所有版本的iOS数据存储指南。
发布于 2013-07-18 20:23:34
您可以将此代码用于iOS 5.1或更高版本
- (BOOL)addSkipBackupAttributeToItemAtPath:(NSString *)filePathString {
NSURL *fileURL = [NSURL fileURLWithPath:filePathString];
assert([[NSFileManager defaultManager] fileExistsAtPath: [fileURL path]]);
NSError *error = nil;
BOOL success = [fileURL setResourceValue:[NSNumber numberWithBool: YES]
forKey: NSURLIsExcludedFromBackupKey
error: &error];
return success;
}
https://stackoverflow.com/questions/8558315
复制相似问题