数据存储之沙盒路径
第一种打开应用程序沙盒路径的方式
第一个参数(NSDocumentDirectory)是:枚举值,枚举你具体要查找的文件夹【要进入哪个文件夹直接修改其枚举值即可】 这里的NSDocumentDirectory作用代表进入Documents文件夹,如想进入其它文件夹可对其进行修改 可查看其枚举值的类型 如:进入Caches文件夹 第一个参数改为NSCachesDirectory
第二个参数:NSUserDomainMask表示用户的主目录
第三个参数:一般设置为YES表示展示完整的路径
NSSearchPathForDirectoriesInDomains查找沙盒路径的,返回值是一个数组,这个数组里边只有一个元素,这个元素就是路径,直接使用下标取出即可,此处的下标取为0即可
第二种打开应用程序沙盒路径的方式
第一步:找到主目录文件夹
第二步:然后拼接自己想进入的文件夹名称
stringByAppendingPathComponent进入文件夹是通过住目录找到Library文件夹再找到其中的Caches文件
stringByAppendingString进入文件夹是通过住目录找到Library文件夹再找到其中的Caches文件 *(此处注意:Library前必须有/ )--系统寻找路径时此方法不会自动生成/,需自行添加
特殊的文件夹的查找方式
检验路径是否存在的方法可通过打印获得对应路径字符串,赋值此字符串通过以下方式查找
1.先找到Finder图标 此图中左上角的笑脸图标 2.点开后点击上方菜单栏中的前往按钮 会出现一个前往文件夹图标 (也可用对应的快捷键来打开)
3.打开后会出现一个输入框 将复制的路径粘贴其中 就可找到对应文件
简单对象的本地持久化
将NSString类型的数据存储到本地(此处只拿NSString进行举例 NSArray和NSDictionary类型基本相似不再举例)
将NSData类型的数据存储到本地(以图片为例)
初始化image
这种必须拼接图片的全名称,否则image的路径为空
使用initWithContentsOfFile初始化图片的时候,每次都会根据路径去读取,不会占用内存,如果图片在当前工程中只使用一次,应该选择这个方法
(另一个初始化方法使用imageNamed:第一次读取的时候,先把这个图片放到缓存里,下次再使用到这个同名图片的时候直接从缓存中读取;优点:方便快捷,只有第一次使用的时候稍慢,接下来再使用就会稍微快点;缺点:如果在当前工程中只使用一次会浪费内存)
将image类型的对象转换成NSData类型的数据进行存储
使用UIImageJPEGRepresentation将图片转换成NSData类型的
第一个参数(image):要转换的image对象
第二个参数(1):表示图片压缩的值,此时为1表示原比例不变
iPhone中将大于2M的图片,会自动旋转90度,所以最终会将图片保存成jpeg格式的
复杂对象的本地化
首先创建NSObject类的文件命名为Person
在Person.h文件里声明属性 *(<NSCoding> 此协议写在NSObject后)
在Person.m文件里进行编写如下
在Controller控制器里先导入#import "Person.h"
归档
解档
直接写入本地:数据是整存整取的