目前,用以本地化存储的方式有很多,常用的有以下:

1.临时缓存

先说说临时缓存,临时缓存一般相当于用来管理应用程序中全局需要常用的一些内容。比如当前用户的ID或者当前的定位信息等。

常用的方式就是写一个静态变量,然后使用类方法调用。(或者单例类也行)

static NSMutableDictionary *_cacheDic;

#pragma mark - 临时缓存(退出应用后消失)
+(id)cacheValueForKey:(SCCacheKey)key{return [[self cacheDic] valueForKey:[NSString stringWithFormat:@"%d",key]];
}+(void)setCacheValue:(id)value forKey:(SCCacheKey)key{[[self cacheDic] setObject:value forKey:[NSString stringWithFormat:@"%d",key]];
}+(void)deleteCacheForKey:(SCCacheKey)key{[[self cacheDic] removeObjectForKey:[NSString stringWithFormat:@"%d",key]];
}

2.本地存储NSUserdefaults,按KV存储,重启后还会存在。缺点1:只能存储NSString内容,缺点2:删除APP后会消失

#pragma mark - 字段持久缓存(保存在数据库)
+(NSString *)storeValueForKey:(SCStoreKey)key{return [[NSUserDefaults standardUserDefaults] valueForKey:[@(key) stringValue]];
}+(void)setStoreValue:(NSString *)value forKey:(SCStoreKey)key{[[NSUserDefaults standardUserDefaults] setObject:value forKey:[@(key) stringValue]];[[NSUserDefaults standardUserDefaults] synchronize];
}+(void)deleteStoreValueForKey:(SCStoreKey)key{[[NSUserDefaults standardUserDefaults] removeObjectForKey:[@(key) stringValue]];[[NSUserDefaults standardUserDefaults] synchronize];
}

3.NSKeyedArchiver(归档),可存储自定义对象。缺点:删除APP后会消失。

#pragma mark - 对象持久缓存(保存在本地文件)
+(void)setStoreObject:(NSObject<NSCoding> *)obj forKey:(SCObjectKey)key{NSString *path=[SCSysconfig filePathByName:[NSString stringWithFormat:@"%d.domain",key]];[NSKeyedArchiver archiveRootObject:obj toFile:path];
}+(NSObject<NSCoding> *)storeObjectForKey:(SCObjectKey)key{NSString *path=[SCSysconfig filePathByName:[NSString stringWithFormat:@"%d.domain",key]];NSObject<NSCoding> *obj=[NSKeyedUnarchiver unarchiveObjectWithFile:path];return obj;
}+(void)deleteStoreObjectForKey:(SCObjectKey)key{NSString *path=[SCSysconfig filePathByName:[NSString stringWithFormat:@"%d.domain",key]];[SCFileOper removeFile:path];
}

NSKeyedArchiver的使用方法可以参考这篇博客:http://www.cnblogs.com/xiaobaizhu/p/4011332.html

4.KeyChain的使用,删除APP后,重新安装还存在。(只要BoundleID一致)

Keychain即钥匙串,是用以在应用删除后还可以保存数据的一种方法。它的存储和应用的BoundleID有关。比如百度贴吧就实现了在应用删除后,再重新安装,如果Token还是有效的话,无需再登陆。

Keychain的使用官方接口略烦,一般采用第三方库,具体可以参考我的博客:http://www.cnblogs.com/rayshen/p/4671477.html

Demo:https://github.com/rayshen/LocalDataDemo

转载于:https://www.cnblogs.com/rayshen/p/4910749.html

iOS 关于本地持久化存储的探讨相关推荐

  1. 关于HTML5本地持久化存储的Web SQL、Local Storage、Cookies技术

    在浏览器客户端记录一些信息,有三种常用的Web数据持久化存储的方式,分别是Web SQL.Local Storage.Cookies. Web SQL 作为html5本地数据库,可通过一套API来操纵 ...

  2. c语言 本地存储文件路径,本地持久化存储

    一.沙盒机制 沙盒是什么 每个iOS应用都有属于自己的应用沙盒(沙盒就是文件系统目录),与其他文件系统隔离,每个应用都只能访问自己的沙盒. 沙盒的路径结构 Document:适合存储重要的数据, iT ...

  3. iOS中SQLite持久化存储第三方库FMDB

    @interface HMShopTool : NSObject + (NSArray *)shops; + (void)addShop:(HMShop *)shop; @end @implement ...

  4. iOS中持久化存储SQLite(一)

    在iOS中做持久化存储有多种方案,其中包括plist, preference, sqlite, core data,其中: (1)plist, preference适合小型数据存储,因为每次存储前都必 ...

  5. 【k8s的持久化存储】PV、PVC、StorageClass讲解

    一.PV和PVC的引入 Volume 提供了非常好的数据持久化方案,不过在可管理性上还有不足. Pod 通常是由应用的开发人员维护,而 Volume 则通常是由存储系统的管理员维护.开发人员要获得上面 ...

  6. 无星的RN学习之旅(四)——通信、持久化存储、iOS打包

    说说最近项目的一些感想吧. 一.RN的创意 RN其实我觉得是一个很有创意的想法.不知道各位写RN项目的时候,有没有打开Xcode看过app的层级关系,我发现RN的这个想法,真的很有创意. 作为一名原生 ...

  7. (转)iOS应用架构谈 本地持久化方案及动态部署

    原文链接:http://casatwy.com/iosying-yong-jia-gou-tan-ben-di-chi-jiu-hua-fang-an-ji-dong-tai-bu-shu.html ...

  8. iOS应用架构谈(4) 本地持久化方案及动态部署

    前言 嗯,你们要的大招.跟着这篇文章一起也发布了CTPersistance和CTJSBridge这两个库,希望大家在实际使用的时候如果遇到问题,就给我提issue或者PR或者评论区.每一个issue和 ...

  9. iOS应用架构谈-本地持久化方案及动态部署

    iOS应用架构谈-开篇 iOS应用架构谈-view层的组织和调用方案 iOS应用架构谈-网络层设计方案 iOS应用架构谈-本地持久化方案及动态部署 iOS应用架构谈-组件化方案 前言 嗯,你们要的大招 ...

  10. 四,iOS应用架构谈 本地持久化方案及动态部署

    前言 嗯,你们要的大招.跟着这篇文章一起也发布了CTPersistance和CTJSBridge这两个库,希望大家在实际使用的时候如果遇到问题,就给我提issue或者PR或者评论区.每一个issue和 ...

最新文章

  1. 四种软件架构演进史,会一种就很牛逼了!
  2. 浅析网站建设的基本原则
  3. 模拟人生4修身拉德兰连衣裙MOD下载
  4. 设计模式是什么鬼(单例)
  5. Python中的字符串方法
  6. package.json在Node JS应用程序中的重要性
  7. 当Python中混进一只薛定谔的猫……
  8. windows下安装sqlmap 详细教程
  9. 小米笔记本android开发,小米笔记本将预装自主研发的MIOS系统!
  10. 【全志V3s / LicheePi Zero / 荔枝派】Air724合宙4G模块RNDIS拨号
  11. 工业相机基本参数以及选型
  12. 以太网没有有效IP配置问题
  13. 最小二乘法拟合椭圆(椭圆拟合线)
  14. 用 texstudio, 外部 pdf 浏览器查看可以正常显示中文, 但是内置的 pdf 浏览器不能显示中文?
  15. 项目中项目评估概述及原则
  16. 杂谈对抽象事物的审美——繁体字与简体字,孰美?
  17. CSDN著名技术专家Visual C++2010开发体验心得——从Visual C++6 0到Visual C++201
  18. SSD固态硬盘究竟快在哪?
  19. 百度高德离线地图二次开发入门步骤
  20. 条码打印软件如何做到流水号防重复打印?

热门文章

  1. python 最小二乘法库_利用python搞机器学习——最小二乘法 | 学步园
  2. html compiler注册机,XXX计算器1.8注册分析和注册机代码
  3. linux 围棋界面,围棋GUI界面Sabaki怎么用?
  4. c语言中 临时变量的作用,C语言 临时变量不能作为函数的返回值?
  5. c#加粗代码_C# 8中的可空引用类型
  6. 用计算机探索规律概括,《用计算器探索规律》优秀教学设计
  7. android kill process,为什么Application有时会在killProcess上重启?
  8. 训练模型以识别文本中的情绪 3 NLP 零到英雄 Training a model to recognize sentiment in text
  9. 自动驾驶 2-5 自动驾驶汽车的未来 The Future of Autonomous Vehicles
  10. Spring Boot 2.0 从入门到精通 From Zero to Hero with Spring Boot - Brian Clozel