当前位置: 首页 > news >正文

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];

 

转载于:https://www.cnblogs.com/mantou811/p/6688489.html

相关文章:

  • linux awk(9)命令详解
  • 色情病毒“魅影杀手”的恶意行为及黑产利益链分析
  • 初学UML之-------用例图
  • Django接受ajax传过来的数组
  • 服务端构架干货:快节奏多人游戏的技术实现
  • SpringMVC -- 梗概--源码--贰--下载
  • 对学习Linux有帮助的4点纯干货建议
  • 网络安装Ubuntu16.04
  • JS存在性
  • Linux系统下磁盘分区与管理
  • CSS基础知识
  • 图解WebGLThree.js工作原理
  • 《JAVA程序设计与实例》记录与归纳--继承与多态
  • iOS - UICollectionView 瀑布流 添加表头视图的坑
  • 罗列几个Android插件化开发框架
  • php的引用
  • 【翻译】Mashape是如何管理15000个API和微服务的(三)
  • Date型的使用
  • HashMap剖析之内部结构
  • Js实现点击查看全文(类似今日头条、知乎日报效果)
  • React Transition Group -- Transition 组件
  • 分享一份非常强势的Android面试题
  • 猫头鹰的深夜翻译:Java 2D Graphics, 简单的仿射变换
  • 前端之React实战:创建跨平台的项目架构
  • 深入浅出webpack学习(1)--核心概念
  • 使用Tinker来调试Laravel应用程序的数据以及使用Tinker一些总结
  • 数据可视化之 Sankey 桑基图的实现
  • 一个SAP顾问在美国的这些年
  • 智能合约Solidity教程-事件和日志(一)
  • 智能网联汽车信息安全
  • media数据库操作,可以进行增删改查,实现回收站,隐私照片功能 SharedPreferences存储地址:
  • Semaphore
  • ​香农与信息论三大定律
  • (C#)if (this == null)?你在逗我,this 怎么可能为 null!用 IL 编译和反编译看穿一切
  • (react踩过的坑)Antd Select(设置了labelInValue)在FormItem中initialValue的问题
  • (每日持续更新)信息系统项目管理(第四版)(高级项目管理)考试重点整理第3章 信息系统治理(一)
  • (原创)Stanford Machine Learning (by Andrew NG) --- (week 9) Anomaly DetectionRecommender Systems...
  • (转载)OpenStack Hacker养成指南
  • .NET Reactor简单使用教程
  • .Net转Java自学之路—基础巩固篇十三(集合)
  • .set 数据导入matlab,设置变量导入选项 - MATLAB setvaropts - MathWorks 中国
  • @RestController注解的使用
  • @软考考生,这份软考高分攻略你须知道
  • [ CTF ]【天格】战队WriteUp- 2022年第三届“网鼎杯”网络安全大赛(青龙组)
  • [ Linux ] git工具的基本使用(仓库的构建,提交)
  • [20160902]rm -rf的惨案.txt
  • [2019.2.28]BZOJ4033 [HAOI2015]树上染色
  • [CTF]php is_numeric绕过
  • [Hive] 常见函数
  • [HTML]Web前端开发技术28(HTML5、CSS3、JavaScript )JavaScript基础——喵喵画网页
  • [IE技巧] 如何让IE 启动的时候不加载任何插件
  • [java]删除数组中的某一个元素
  • [LeetCode 127] - 单词梯(Word Ladder)
  • [LeetCode] 148. Sort List 链表排序
  • [LeetCode]—Longest Palindromic Substring 最长回文子串