iOS应用程序只能在自己的目录下进行文件的操作,不可以访问其他的存储空间,此区域被称为沙盒。
应用沙盒结构分析
1、应用程序包:包含了所有的资源文件和可执行文件
2、Documents:保存应用运行时生成的需要持久化的数据,iTunes同步设备时会备份该目录
3、tmp:保存应用运行时所需要的临时数据,使用完毕后再将相应的文件从该目录删除。应用没有运行,系统也可能会清除该目录下的文件,iTunes不会同步备份该目录 4、Library/Cache:保存应用运行时生成的需要持久化的数据,iTunes同步设备时不备份该目录。一般存放体积大、不需要备份的非重要数据 5、Library/Preference:保存应用的所有偏好设置,IOS的Settings应用会在该目录中查找应用的设置信息。iTunes
IOS中的数据存储
/**
NSSearchPathDirectory.DocumentDirectory 查找Documents文件夹
NSSearchPathDomainMask.UserDomainMask 在用户的应用程序下查找
true 展开路径 false 当前应用的根路径 == “~”
*/
let docPath = NSSearchPathForDirectoriesInDomains(NSSearchPathDirectory.DocumentDirectory, NSSearchPathDomainMask.UserDomainMask, true)[0] as NSString // 上面代码代替下面代码,防止Documen文件夹不存在***************************************************************** // 获得沙盒的根路径 let home = NSHomeDirectory() as NSString // 获得Documents路径,使用NSString对象的stringByAppendingPathComponent()方法拼接路径 let docPath = home.stringByAppendingPathComponent("Documents") as NSString
1、存储为plist属性列表
func saveWithFile() { // 1、获得沙盒的根路径 let home = NSHomeDirectory() as NSString // 2、获得Documents路径,使用NSString对象的stringByAppendingPathComponent()方法拼接路径 let docPath = home.stringByAppendingPathComponent("Documents") as NSString // 3、获取文本文件路径 let filePath = docPath.stringByAppendingPathComponent("data.plist") let dataSource = NSMutableArray() dataSource.addObject("小桥上我曾背你走过") dataSource.addObject("河边上为你放的烟火") dataSource.addObject("电影院最后一排座我们第一次吻过") dataSource.addObject("那么多浪漫我都记得") dataSource.addObject("别再跟着我漂泊") // 4、将数据写入文件中 dataSource.writeToFile(filePath, atomically: true) } func readWithFile() { /// 1、获得沙盒的根路径 let home = NSHomeDirectory() as NSString /// 2、获得Documents路径,使用NSString对象的stringByAppendingPathComponent()方法拼接路径 let docPath = home.stringByAppendingPathComponent("Documents") as NSString /// 3、获取文本文件路径 let filePath = docPath.stringByAppendingPathComponent("data.plist") let dataSource = NSArray(contentsOfFile: filePath) print(dataSource) }
2、使用NSUserDefaults存储数据
func saveWithNSUserDefaults() { // 1、利用NSUserDefaults存储数据 let defaults = NSUserDefaults.standardUserDefaults() // 2、存储数据 defaults.setObject("衣带渐宽终不悔", forKey: "name") // 3、同步数据 defaults.synchronize() } func readWithNSUserDefaul