iOS数据存储到本地的几种方法
A,归档解档(多针对于模型或者数组,利用MJExtension)
1,先在model里的.m文件写上MJCodingImplementation
2,再进行模型归档:
#define APP_DOCUMENT [NSSearchPathForDirectoriesInDomains (NSDocumentDirectory, NSUserDomainMask, YES) objectAtIndex:0]
#define DocumentPath(path) [APP_DOCUMENT stringByAppendingPathComponent:path]
[NSKeyedArchiver archiveRootObject:模型或者数组 toFile:DocumentPath(@"freeOrderSelectedCar")];
3,解档
NSString *file = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES).firstObject stringByAppendingPathComponent:@"freeOrderSelectedCar"];
模型或者数组 = [NSKeyedUnarchiver unarchiveObjectWithFile:file];
/* 实现下面的方法,说明哪些属性不需要归档和解档 */
+ (NSArray *)mj_ignoredCodingPropertyNames{
return @[@"name"];
}
B,保存数组或字典到本地(json数据的,如果是模型,则用上面的归档)
1, 字典转成二进制数据存到本地
NSData *resultData = [NSJSONSerialization dataWithJSONObject:字典或数组 options:NSJSONWritingPrettyPrinted error:nil];
[resultData writeToFile:DocumentPath(@"areas.plist") atomically:YES];
2, 读取本地数据
NSData *data = [NSData dataWithContentsOfFile:DocumentPath(@"areas.plist")];
//需要判断数据为nil情况,因为如果为nil则无法转成字典的
if (!isEmpty(data)) {
NSDictionary * resultDic = [NSJSONSerialization JSONObjectWithData:data options:NSJSONReadingMutableContainers error:nil];或
NSArray * resultArray = [NSJSONSerialization JSONObjectWithData:data options:NSJSONReadingMutableContainers error:nil];
}
C,偏好设置(保存轻量级的数据)
//从沙盒里面读取键“key”对应的内容“值”
[[NSUserDefaults standardUserDefaults] objectForKey:<#key#>];
//把内容"value"存入到沙盒,对应的键是“key”
[[NSUserDefaults standardUserDefaults] setObject:<#value#> forKey:<#key#>];
//同步到沙盒;必须要写,不写会产生不可预测的Bug
[[NSUserDefaults standardUserDefaults] synchronize];
D,链表(针对数据量大,且为Json格式)(如果数据十分重要不容缺失则最好采用链表存储)(采用STDBManager库,如果找不到这个库,可以留下联系方式。后面我会放到github上面)
1,初始化数据库链表
- (instancetype)init
{
self = [super init];
if (self) {
// 创建缓存数据库表
[[STDatabaseManager sharedInstance] createTableWithName:TABLE_CACHE];
}
return self;
}
2,存储数据到链表(把json格式的数据存入的)
if (!isEmpty(json)) {
[[STDatabaseManager sharedInstance] putJsonObject:json withId:@“Key” intoTable:TABLE_CACHE];
}
3,读取数据(如果需要模型或模型数组,可以拿到的json数据转为模型或模型数组)
NSObject* data = [[STDatabaseManager sharedInstance] getJsonObjectById:@“Key” fromTable:TABLE_CACHE];
最新文章
- 【转】单调队列优化DP
- ubunto安装pycharm
- 如何用参数化SQL语句污染你的计划缓存
- iOS推送失败的可能问题汇总
- C#引用类型与值类型的比较
- iOS第三方(显示视图的宽度高度)- MMPlaceHolder
- Web.config配置文件详解(新手必看)
- Python算法之---冒泡,选择,插入排序算法
- LINQ Enumerable 续 II
- python 如何重新加载有修改过的模块(module)
- Struts2_配置文件
- ERP系统
- iOS动画学习
- OpenStack-Ocata版+CentOS7.6 云平台环境搭建 — 5.在控制节点上部署计算服务Nova
- Android ScrollView和ListView联用,且ListView可以下拉刷新和上拉加载
- wordpress文章页两侧添加分页导航箭头
- java常用设计模式四:观察者模式
- 《Effective C++》 目录:
- stl源码剖析 详细学习笔记 算法(1)
- SSDT表概念具体解释
热门文章
- CentOS/Linux 网卡设置 IP地址配置永久生效
- 安装 rbbitMQ redis mongo的三个扩展
- push images to private repostory
- Could not resolve dependencies for project
- C++ namespace浅析
- redux sample with redux source code
- XMLHttpRequest的withCredentials属性
- BestCoder Round #81 (div.2) 1004 String(动态规划)
- 微信公众号实现zaabix报警2017脚本(升级企业微信后)
- ie tbody table 兼容方法