数据持久化 (沙盒, 数据储存)

数据持久化的步骤

// 1.指定前往哪个文件夹
// 2,用字符串接收路径
// 3.拼接文件夹路径
// 4.写入本地或者归档操作
// 注 :如果是复杂对象归档 ,要签订NSCoding方法 .并且实现两个协议方法,放在数组里的复杂对象归档也要签协议

苹果手机为了保证自己数据上的绝对的安全设计了沙盒文件 ,每一个应用程序都配备了自己的沙盒文件 ,每一次运行 ,文件夹的名字就会变成一个没有任何规律的字符串

第一个参数 当前要去哪个文件夹 ,前往documents文件用 NSDocumentDirectory ,64行那个 , 还可以前往caches文件夹 ,对应 68 行

第二个参数 访问文件夹类型 ,指定访问时用户文件夹

第三个参数 绝对路径(YES) ,相对路径(NO)

(1)绝对路径是给系统使用的 ,系统可以根据当前路径找到文件夹 , 我们在操作文件的时候使用绝对路径
(2)相对路径只会把要前往的文件夹显示出来 ,其他部分都是~ ,告诉程序员要去哪个文件夹
NSArray *sandbox =NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES);

沙盒里一共有三个文件

1.是Documents文件 : 主要是用来储存用户的想要储存的一些信息 ,比如收藏的信息或者自己设置的一些内容 ,所以我们做收藏功能就是前往这个文件夹里写文件
2.Library文件夹是方便程序员开发使用的.主要操作它里面的两个文件夹 ,caches和 preferences
(1).caches :用来保存缓存文件 ,SDWebImage会把图片加到缓存文件中 ,所以清除缓存功能就是把这个文件夹删除
(2).preferences 一般来保存程序员设置的信息,比如NSUserFaults就会把数据保存在这个文件夹里
3.tmp文件:一般存放临时内容
之前在沙盒里还有一个.app文件 ,在新的版本里已经被移走了

把简单的对象写入本地, 简单的对象指的是NSString ,NSArray等

1.先通过数组获取沙盒路径

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

2.从数组里获取沙盒路径

NSString *sandBoxPath =sandBox[0];

3.要给写入的文件拼接一个路径 ,拼接方式有两种

 NSString *documentPath =[sandBoxPath stringByAppendingPathComponent:@"顾宇.xml"];

把字符串写入到本地

NSString *str= @”隔壁老顾”;

第一个参数 :文件要保存的路径

第二个参数 :对文件进行保护 ,YES

第三个参数 :编码

四 ,错误信息

[str writeToFile:documentPath atomically:YES encoding:NSUTF8StringEncoding error:nil];

如果路径下有对应的文件 ,则会把原来文件覆盖 ,如果没有则创建一个新的文件

把沙盒文件再读出来

 NSString *tempStr =[NSString stringWithContentsOfFile:documentPath encoding:NSUTF8StringEncoding error:nil];

把数组写入到本地

NSArray *arr [email protected][@”1” ,@”2”, @”3” ,@”4” ,@”5” ,@”6”];

1.通过数组获取沙盒地址

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

2.用字符串保存沙盒路径

NSString *sandBoxPath =sandBox[0];

3.给要写入得文件拼接路径

NSString *documentPath =[sandBoxPath stringByAppendingPathComponent:@"gu.plist"];

4.把数组写入到本地

[arr writeToFile:documentPath atomically:YES];

5.把数组再读出来

NSArray *temp =[NSArray arrayWithContentsOfFile:documentPath];

把简单的字典写入到本地

 NSDictionary *dic =[NSDictionary dictionaryWithObjectsAndKeys:@"1",@"2",@"3",@"4",@"5",@"6", nil];

NSArray *sandBox =NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
    NSString *sangBoxPath =sandBox[0];

  NSString *documentPath =[sangBoxPath stringByAppendingPathComponent:@"111.plist"];
    NSLog(@"%@",documentPath);
    [dic writeToFile:documentPath atomically:YES];
    NSMutableDictionary *temp =[NSMutableDictionary dictionaryWithContentsOfFile:documentPath];
    NSLog(@"%@",temp);

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-10-03 16:22:01

数据持久化 (沙盒, 数据储存)的相关文章

iOS开发 - 获取真机沙盒数据

今天要获取之前真机测试时写入沙盒的数据, 本来以为挺麻烦的. 后来捣腾了一下, 才知道原来这么简单... 下面直接看具体步骤. 前提: 真机已经通过USB和你的电脑连接上了! 1.进入Organizer 2.选择你的应用. 并导出数据.(点击Download) 3.保存数据到相应位置.(点击Save) 4.打开, 查看数据. 保存完毕后, 你后发现一个这样的文件. 选中它, 右键---->显示包内容. 然后进入------->AppData ------>Documents. 即可看到你

[iOS基础控件 - 6.11.5] 沙盒 & 数据存储

A.沙盒 每个APP都有一个沙盒,是独立存在的 1.Xcode5和Xcode6的模拟器文件目录 a.模拟器路径改版 (1)Xcode5中模拟器路径为:/Users/用户名/Library/Application Support/iPhone Simulator (2)Xcode6中模拟器路径为:/Users/用户名/ Library/Developer/CoreSimulator 应用程序包:(上图中的Layer)包含了所有的资源文件和可执行文件 b.沙盒路径改版 (1)Xcode5中沙盒的路径

IOS数据存储 —— 沙盒

沙盒结构 沙盒的文件系统?录,如下图所示(假设应用的名称叫Layer) 1.Documents 目录 您应该将所有的应用程序数据文件写入到这个目录下. 这个目录用于存储用户数据或其它应该定期备份的信息. 保存由应用程序产生的文件或者数据,例如:涂鸦程序生成的图片,游戏关卡记录 iCloud会自动备份Document中的所有文件. 上架注意 如果保存了从网络上下载的文件,在上架审批的时候会被拒! 2.AppName.app 目录:这是应用程序的程序包目录,包含应用程序的本身.由于应用程序必须经过签

IOS 初级数据持久化-沙盒机制

什么是数据持久化?数据的永久存储 为什么要坐数据持久化:存储在内存中的数据,程序关闭,内存释放,数据丢失,这种数据是临时的 数据初九化的本质:数据保存成文件,存储到程序的沙河中 1.沙盒机制 每个应用程序位于文件系统的严格限制部分 每个应用程序只能在为该程序创建的文件系统中读取文件 每个应用程序在IOS系统内都放在了统一的文件夹目录下 沙盒的本质就是一个文件夹,名字是随机分配的. 2.沙盒路径的位置 1.通过Finder查找程序沙盒相对的路径 通过代码查找程序沙盒相对路径 NSString *D

swift3.0 存取json数据到沙盒

p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 14.0px Menlo; color: #e7e8eb } p.p2 { margin: 0.0px 0.0px 0.0px 0.0px; font: 14.0px Menlo; color: #51c34f } p.p3 { margin: 0.0px 0.0px 0.0px 0.0px; font: 14.0px Menlo; color: #e7e8eb; min-height: 16.0px }

数据持久化以及沙盒路径

什么是沙盒机制 简单对象写入文件 NSFileManager 复杂对象写入文件 数据持久化 什么是数据持久化? 数据的永久存储 为什么要做数据持久化?:存储在内存中的数据,程序关闭,内存释放,数据丢失,这种数据是临时的,用户下次打开应用程序,还要重新联网去刷新数据,无疑增加了用户的负担 数据持久化的本质:数据保存成文件,存储到程序的沙盒中 什么是沙盒机制? 每个应用程序位于文件系统的严格限制部分 每个应用程序只能在为该程序创建的文件系统中读取文件 每个应用程序在iOS系统内部都放在了统一的文件夹

ios开发学习笔记--数据持久化之Core Data

数据持久化之CoreDate 一.     Core Data简介 Core Data是苹果公司为了实现数据持久化提供的一个框架,而不是一个数据库,提供对象-关系映射[ORM]的功能(将对象转化为数据,也能将保存在数据库的数据还原为对象). 虽然底层操作与SQLite相似,但是并不直接写SQL语句,而且只能整个取出实体记录,然后分解之后才能得到某个属性. Core Data能存储的类型:SQLite数据库.XML.二进制.自定义数据类型 一般情况下,Core Data的数据存在沙盒下的Docum

数据持久化-Plist

Plist 保存用户的配置数据 1.创建Plist文件,用Dictionary 读出数据 ? ??//获取沙盒目录 ? ? NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); ?? ? ? ? NSString *path=[paths objectAtIndex:0]; ?? ? ? ? //得到完整的文件名称 ? ? NSString *filepa

Docker数据持久化与容器迁移

上节讲到当容器运行期间产生的数据是不会在写镜像里面的,重新用此镜像启动新的容器就会初始化镜像,会加一个全新的读写入层来保存数据.如果想做到数据持久化,Docker提供数据卷(Data volume)或者数据容器卷来解决问题,另外还可以通过commit提交一个新的镜像来保存产生的数据.那么,来一一看下各自的使用方法. 一.数据卷 数据卷特性: 可以绕过UFS文件系统,为一个或多个容器提供访问. 完全独立于容器的生存周期,因此不会在删除容器时删除其挂在的数据卷. 数据卷特点: 数据卷在容器启动初始化