第一部分:基本概念
数据持久化就是把你从网上获得的数据存储到自己的本地内存中;我们保存本地一般式分简单对象跟复杂对象的;
简单的对象是系统给的,例如数组跟字典,复杂的是自己写的,例如model;
说道储存就必须说一下沙盒机制;
沙盒机制是一种安全机制,防止其他应用程序来获得自己的数据;沙盒里面有四个文件夹
1.Bundle 2.Documents 3.Library 4.Tmp
1.Bundle 1.代码 2.资源文件 3.配置文件
内容在程序运行期间为只读, 不能进行任何的修改
在开发期间可以更改
2.Documents
1.大小限制(系统里的文件会自动上传到icloud(5G))2.数据库 3.从应用程序安装到删除的时候所放的东西
3.Library 1.caches 2.preference
caches 1.放图片缓存 2. 网络数据存储(也叫缓存)
preference(配置) 用NSUserDefaules来存储密码,账户等(自动存储到perference中)
4. Tmp(临时性文件夹)数据用完就删(一般放解压文件)
第二部分:简单数据存储
1.字符串存储:
NSString *str = @"dl";
NSArray *array = NSSearchPathForDirectoriesInDomains(NSLibraryDirectory, NSUserDomainMask, YES);
NSString *path = [array firstObject];
NSString *path1 = [NSString stringWithFormat:@"%@/%@", path, @"123"];
[str writeToFile:path1 atomically:YES encoding:NSUTF8StringEncoding error:nil];
NSLog(@"%@", path1);
2.字典的存储:
NSMutableDictionary *dic = [NSMutableDictionary dictionaryWithObjectsAndKeys:@"111111", @"num", nil];
NSArray *array = NSSearchPathForDirectoriesInDomains(NSLibraryDirectory, NSUserDomainMask, YES);
NSString *path = [array firstObject];
NSString *path1 = [NSString stringWithFormat:@"%@/1111", path];
[dic writeToFile:path1 atomically:YES];
3.数组的存储:
NSMutableArray *arr = [NSMutableArray arrayWithObjects:@"13213", nil];
NSArray *array = NSSearchPathForDirectoriesInDomains(NSLibraryDirectory, NSUserDomainMask, YES);
NSString *path = [array firstObject];
NSString *path1 = [NSString stringWithFormat:@"%@/11", path];
[arr writeToFile:path1 atomically:YES];
第三部分:复杂数据的存储
Model *model = [[Model alloc] init];
model.name = @"zhang";
model.age = 23;
将model转换为data,进行归档(空间有限,这里我就省略创建Model了)
如果model在数组中, 想要存储数组, 也必须用复杂类型对象将数组转换成data, 然后进行存储
NSData *data = [NSKeyedArchiver archivedDataWithRootObject:model];
NSArray *arr = NSSearchPathForDirectoriesInDomains(NSLibraryDirectory, NSUserDomainMask, YES);
NSString *path = [arr firstObject];
path = [NSString stringWithFormat:@"%@/1.txt", path];
[data writeToFile:path atomically:YES];
注意:读取部分我就不说了,调用相应的读取地址的函数即可,原理基本一样;