在沙盒中自定义文件夹,以及写入的一些文件,如果不做标识,那么苹果会将数据同步到itunes 和 iCloud . 如果你的备份数据不符合苹果的备份机制,那么你将会被拒了。
先阅读官方说明:
https://developer.apple.com/library/ios/#qa/qa1719/_index.html
使用方法:
#import “sys/xattr.h”
- (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;
}
- (void)addSkipBackupAttributeToPath:(NSString*)path {
u_int8_t b = 1;
setxattr([path fileSystemRepresentation], “com.apple.MobileBackup”, &b, 1, 0, 0);
}
对文件夹的path使用这两个方法中的任意一个,就可以使该目录和该目录包含的所有文件和文件夹不被icloud和itunes同步了!
对于数据的同步与否的设计规则 详细看上面的官方说明链接。
另外补充一下,对这个特性的测试要有耐心,因为icloud识别应用程序里要同步的数据量大小显示要等几秒(菊花。。),
参考文档:apple官方文档,
stackoverflow问答:http://stackoverflow.com/questions/8694112/adding-the-do-not-backup-attribute-to-a-folder-hierarchy-in-ios-5-0-1