iOS中的文件存放法则

Apple对应用程序放在沙盒中的文件有严格要求,主要有:

存放位置要求

用户创建的文件,(程序不能自动生成的),需要放在Documents\

缓存文件,需要放在Library\Caches\

临时文件,放在tmp\,而且要注意清空

文件备份

这个可以通过设置文件的一个属性来控制,具体见下面代码

除了用户创建和编辑的文件,不允许保存到iTunes和iCloud

用户升级程序之后,所有Documents\和Library\的文件会自动复制到新的bundle中去

下面的代码是如何设置属性,让apple在备份的时候,不会包含这个文件。

对于iOS版本5.1之前和之后的处理方式是不一样的。

+(BOOL)addSkipBackupAttributeToItemAtURL:(NSURL *)URL

{

if (![[NSFileManager defaultManager] fileExistsAtPath: [URL path]]) {

return NO;

}

if ([[UIDevice currentDevice].systemVersion floatValue] >= 5.1) {

NSError *error = nil;

BOOL success = [URL setResourceValue: [NSNumber numberWithBool: YES]

forKey: NSURLIsExcludedFromBackupKey error: &error];

if(!success){

NSLog(@"Error excluding %@ from backup %@", [URL lastPathComponent], error);

}

return success;

} 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;

}

}

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • *面试心声:其实这些题本人都没怎么背,但是在上海 两周半 面了大约10家 收到差不多3个offer,总结起来就是把...
    Dove_iOS阅读 27,219评论 30 472
  • 沙盒 Plist Preference偏好设置 NSKeyedArchiver归档 / NSKeyedUnarch...
    追风者366阅读 3,417评论 0 6
  • 一、iOS中的沙盒机制 iOS应用程序只能对自己创建的文件系统读取文件,这个独立、封闭、安全的空间,叫做沙盒。它一...
    tzhtodd阅读 1,303评论 0 2
  • iOS开发-文件管理(一) 一、iOS中的沙盒机制 iOS应用程序只能对自己创建的文件系统读取文件,这个独立、封闭...
    MacShare阅读 1,816评论 0 6
  • 循环引用:http://ios.jobbole.com/82077/类别的作用功能:1.扩充现有类的功能2.对现有...
    得一切从简阅读 530评论 0 1