iOS 8 之后的动态沙盒路径

在iOS8之前,我们获取到沙盒中的document、cache、tmp之后,下一次模拟器或真机无论重启多少次,这具体的路径是固定的,可是iOS8 之后,你要是在按原来的路径去找你想要的东西,我想它会把你坑的很惨.下面我就来说说自己的此次爬坑总结;

1>//获取沙盒路径

NSArray*path =NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,NSUserDomainMask,YES);

NSString*documentPath = [pathlastObject];

//Users/ZZ_running/Library/Developer/CoreSimulator/Devices/B9F35720-6386-445A-A0DA-0D911BFA64C3/data/Containers/Data/Application/176DA32A-E007-42F5-8716-3BBD80FFAB4F/Library/Documents;

2>在iOS8之后,苹果可能考虑到安全因素,应用每一次重启,沙盒路径都动态的发生了变化。

iOS8中第一次启动时的路径:

///Users/ZZ_running//Library/Developer/CoreSimulator/Devices/B9F35720-6386-445A-A0DA-0D911BFA64C3/data/Containers/Data/Application/D73211C2-497C-4C92-828C-584955C23BCB/Library/Documents

iOS8中第二次启动时的路径:

///Users/ZZ_running//Library/Developer/CoreSimulator/Devices/B9F35720-6386-445A-A0DA-0D911BFA64C3/data/Containers/Data/Application/2B080462-8330-440E-AC26-B9B15E065110/Library/Documents

从下划线的部分可以明显看出,两次运行得到的沙盒路径会发生改变,虽然iOS8之后,沙盒的路径发生了变化,但是并不代表你原来沙盒路径中的数据发生了变化;同时,也并不代表路径会越来越多.你一定有所顾虑了吧,下一次重启后路径变化了,那我们的数据/文件去哪儿呢?

这个问题,你也完全没必要去担心,苹果是不会坑你的,他会帮你处理;

1>苹果会把你上一个路径中的数据转移到你新的路径中。

2>你上一个路径也会被苹果毫无保留的删除,只保留最新的路径。

//获取沙盒路径后,你一定要注意,不要把沙盒路径写入你要保存的地方,比如数据库,如果你把documentPath路径写入数据库,这样你会很惨的,只要用每次运行程序后生成的

NSArray*path =NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,NSUserDomainMask,YES);

NSString*documentPath = [pathlastObject];发生了改变,你数据库里的路径就会消失,你就无法找到你想要的数据,你只需要将你的文件名:比如像a.jpg,你想拿到你存进去的数据,就需要让心生成的documentPath再拼上你自己的文件名比如 你的 a.jpg,这样不管document路径怎么变,你都可以找到你的文件;

时间: 2024-10-04 04:24:11

iOS 8 之后的动态沙盒路径的相关文章

iOS沙盒(sandbox)机制及获取沙盒路径

一. 每个iOS应用SDK都被限制在“沙盒”中,“沙盒”相当于一个加了仅主人可见权限的文件夹,苹果对沙盒有以下几条限制. (1).应用程序可以在自己的沙盒里运作,但是不能访问任何其他应用程序的沙盒. (2).应用程序间不能共享数据,沙盒里的文件不能被复制到其他应用程序文件夹中,也不能把其他应用程序文件夹中的文件复制到沙盒里. (3).苹果禁止任何读.写沙盒以外的文件,禁止应用程序将内容写到沙盒以外的文件夹中. (4).沙盒根目录里有三个文件夹:Documents,一般应该把应用程序的数据文件存到

iOS学习7:iOS沙盒(sandBox)机制(一)之获取沙盒路径及目录说明(转)

转:http://my.oschina.net/joanfen/blog/151145 一.iOS沙盒机制 iOS的应用只能访问为该应用创建的区域,不可访问其他区域,应用的其他非代码文件都存在此目录下,包括图片,属性文件plist,bundle,nib文件等,这块区域称之为沙盒(sandBox). 每个应用都有属于自己的存储空间,即沙盒 应用只能访问自己的沙盒,不可访问其他区域 如果应用需要进行文件操作,则必须将文件存放在沙盒中,尤其是数据库文件,在电脑上操作时,可以去访问,但是如果要装在真机上

iOS之沙盒机制和如何获取沙盒路径

iOS APP可以在自己的沙盒里读写文件,但是,不可以访问其他APP的沙盒.每一个APP都是一个信息孤岛,相互是不可以进行通信的,唯独可以通过URL Scheme.沙盒里面的文件可以是照片.声音文件.文本.属性列表等. 沙盒机制简介 沙盒简述: 每一个APP都有一个存储空间,就是沙盒. APP之间不能相互通信. 沙盒根目录结构:Documents.Library.temp. 简述一下Documents.Library.temp的区别: Documents:用于存储用户数据,iTunes备份和恢复

iOS沙盒(sandbox)机制及获取沙盒路径

一.每个iOS应用SDK都被限制在沙盒中,沙盒相当于一个加了仅主人可见权限的文件夹,苹果对沙盒有以下几条限制. (1).应用程序可以在自己的沙盒里运作,但是不能访问任何其他应用程序的沙盒. (2).应用程序间不能共享数据,沙盒里的文件不能被复制到其他应用程序文件夹中,也不能把其他应用程序文件夹中的文件复制到沙盒里. (3).苹果禁止任何读.写沙盒以外的文件,禁止应用程序将内容写到沙盒以外的文件夹中. (4).沙盒根目录里有三个文件夹: Documents:一般应该把应用程序的数据文件存到这个文件

iOS开发之获取沙盒路径

iOS开发之沙盒机制(SandBox)具体解说了沙盒的一些机制.在开发中,我们须要对沙盒进行操作.所以我们须要获取到沙盒路径. 沙盒里的目录包含Documents.Library.tmp.这三个目录的作用请点击这里.接下来我们来解说怎样获取Documents.Library.tmp的路径. 获取沙盒根文件夹 获取沙盒根文件夹.直接调用NSHomeDirectory(): //获取沙盒根文件夹 NSString *directory = NSHomeDirectory(); NSLog(@"dir

iOS开发寻找沙盒路径

寻找沙盒路径方法:(网上帖子的方法不行,可以尝试第一种) 1.直接打印NSHomeDirectory() 即 NSLog(@"%@", NSHomeDirectory()); 对于NSHomeDirectory()官方的描述是: 对于mac打印出来后就会得到沙盒的路径,例如我得到的打印结果是: /Users/zzz/Library/Developer/CoreSimulator/Devices/80CA1C69-E887-4F00-8508-7A9F590204A4/data/Cont

IOS 沙盒路径的机制

1.前往沙盒目录:在Finder上点->前往->前往文件夹,输入/Users/username/Library/Application Support/iPhone Simulator/  前往 2.沙盒结构:每个沙盒含有3个文件夹:Documents, Library 和 tmp. Documents:苹果建议将程序中建立的或在程序中浏览到的文件数据保存在该目录下,iTunes备份和恢复的时候会包括此目录Library:存储程序的默认设置或其它状态信息: Library/Caches:存放缓

iOS 沙盒路径获取,创建文件

沙盒下主要有四个文件夹:document,caches,tmp,library document 的路径 程序运行时生成的文件,这个文件不要存比较放大的文件,比如音频,视频类,因为这里的东西会被上传 caches 的路径 一般用于文件的下载,存储(不会被上传) tmp 临时文件.程序结束后应该清空 沙盒文件夹路径获取: 获取沙盒路径: 1 NSString *sandBoxPath = NSHomeDirectory(); 获取 document : 1 NSString *documentPa

去除警告,打电话,发信息,应用程序之间跳转,打印沙盒路径,字符串名字转换方法,包装导航控制器等的代码

从偏好设置中读取值: 打电话代码: 发信息代码: 打印沙盒路径代码: 应用程序之间跳转代码: 跳转到苹果商店代码: 去除警告代码: 根据字符串名称转换成相对应方法的代码: #import "SZMSettingsCell.h" @implementation SZMSettingsCell //选择不同的cell类型 + (UITableViewCellStyle)cellStyleWithDict:(NSDictionary *)dict{ UITableViewCellStyle