1.  数据存储常用的方式
(1)XML 属性列表(plist)归档

(2)preference(偏好设置)

(3)NSKeyedArchiver归档(NSCoding)

(4)  SQLite3

  (5)  Core Data

2.  应用沙盒(文件系统根目录)

2.1.  应用沙盒结构分析

  • Documents:保存应用运行时生成的需要持久化的数据,iTunes同步设备时会备份该目录。例如,游戏应用可将游戏存档保存在该目录
  • tmp:保存应用运行时所需的临时数据,使用完毕后再将相应的文件从该目录删除。应用没有运行时,系统也可能会清除该目录下的文件。iTunes同步设备时不会备份该目录
  • Library/Caches:保存应用运行时生成的需要持久化的数据,iTunes同步设备时不会备份该目录。一般存储体积大、不需要备份的非重要数据
  • Library/Preference:保存应用的所有偏好设置,iOS的Settings(设置)应用会在该目录中查找应用的设置信息。iTunes同步设备时会备份该目录

2.2.  应用沙盒目录的常见获取方式

  • 沙盒根目录:NSString *home = NSHomeDirectory();
  • N01.Documents:(2种方式)
  • (1)利用沙盒根目录拼接”Documents”字符串

NSString *home = NSHomeDirectory();

NSString *documents = [home stringByAppendingPathComponent:@"Documents"];

// 不建议采用,因为新版本的操作系统可能会修改目录名

  • (2)利用NSSearchPathForDirectoriesInDomains函数

// NSUserDomainMask 代表从用户文件夹下找

// YES 代表展开路径中的波浪字符“~”

NSArray *array =  NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, NO);

// 在iOS中,只有一个目录跟传入的参数匹配,所以这个集合里面只有一个元素

NSString *documents(也是path) = [array objectAtIndex:0];

  • NO2.tmp:NSString *tmp = NSTemporaryDirectory();
  • NO3.Library/Caches:(跟Documents类似的2种方法)
  • (1)利用沙盒根目录拼接”Caches”字符串
  • (2)利用NSSearchPathForDirectoriesInDomains函数(将函数的第2个参数改为:NSCachesDirectory即可)
  • NO4.Library/Preference:通过NSUserDefaults类存取该目录下的设置信息

3..  属性列表

  • XML 属性列表(plist)归档

  • 属性列表是一种XML格式的文件,拓展名为plist
  • 如果对象是NSString、NSDictionary、NSArray、NSData、NSNumber等类型,就可以使用writeToFile:atomically:方法直接将对象写到属性列表文件中

属性列表-NSDictionary的存储和读取过程

4.  偏好设置

  • preference(偏好设置)

  • 每个应用都有个NSUserDefaults实例,通过它来存取偏好设置
  • 比如,保存用户名、字体大小、是否自动登录

NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];

[defaults setObject:@"itcast" forKey:@"username"];

[defaults setFloat:18.0f forKey:@"text_size"];

[defaults setBool:YES forKey:@"auto_login"];

  • 读取上次保存的设置

NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];

NSString *username = [defaults stringForKey:@"username"];

float textSize = [defaults floatForKey:@"text_size"];

BOOL autoLogin = [defaults boolForKey:@"auto_login"];

  • 注意:UserDefaults设置数据时,不是立即写入,而是根据时间戳定时地把缓存中的数据写入本地磁盘。所以调用了set方法之后数据有可能还没有写入磁盘应用程序就终止了。出现以上问题,可以通过调用synchornize方法强制写入

[defaults synchornize];

5.  NSKeyedArchiver

  • NSKeyedArchiver归档(NSCoding)

  • 如果对象是NSString、NSDictionary、NSArray、NSData、NSNumber等类型,可以直接用NSKeyedArchiver进行归档和恢复
  • 不是所有的对象都可以直接用这种方法进行归档,只有遵守了NSCoding协议的对象才可以
  • NSCoding协议有2个方法:
  • (1)encodeWithCoder:

每次归档对象时,都会调用这个方法。一般在这个方法里面指定如何归档对象中的每个实例变量,可以使用encodeObject:forKey:方法归档实例变量

  • (2)initWithCoder:

每次从文件中恢复(解码)对象时,都会调用这个方法。一般在这个方法里面指定如何解码文件中的数据为对象的实例变量,可以使用decodeObject:forKey方法解码实例变量

如果父类也遵守了NSCoding协议,请注意:

  • 应该在encodeWithCoder:方法中加上一句

[super encodeWithCode:encode];

确保继承的实例变量也能被编码,即也能被归档

  • 应该在initWithCoder:方法中加上一句

self = [super initWithCoder:decoder];

确保继承的实例变量也能被解码,即也能被恢复

6.  SQLite3

  • SQLite3是一款开源的嵌入式关系型数据库,可移植性好、易使用、内存开销小
  • SQLite3常用的5种数据类型:text、integer、float、boolean、blob
  • 在iOS中使用SQLite3,首先要添加库文件libsqlite3.dylib和导入主头文件

转载于:https://www.cnblogs.com/Free-Thinker/p/6428787.html

iOS数据存储简要笔记相关推荐

  1. IOS数据存储 之WCDB (一)

    IOS数据存储 之WCDB (一) 1. WCDB 简介 1.1 使用WCDB框架3大优势 1.2 WCDB 的一些基础概念 1.2.1 类字段绑定(ORM) 1.2.2 WINQ(WCDB语言集成查 ...

  2. IOS数据存储 之WCDB (二)WCDB.swift使用篇

    IOS数据存储 之WCDB (二)WCDB.swift使用篇 1.WCDB.Swfit基础使用 1.1 WCDB.Swfit 简介 1.1.1 模型绑定 1.1.2 创建数据库与表 1.1.3 操作数 ...

  3. IOS数据存储之文件沙盒存储

    前言: 之前学习了数据存储的NSUserDefaults,归档和解档,对于项目开发中如果要存储一些文件,比如图片,音频,视频等文件的时候就需要用到文件存储了.文件沙盒存储主要存储非机密数据,大的数据. ...

  4. iOS数据存储——沙盒。

    iOS数据的持久化,可以通过以下途径解决 1.通过文件管理\归档来解决. 2.如果只是少量数据,可通过NSUserDefaults解决,相当于android中的sharedPreferences. 3 ...

  5. iOS数据存储-钥匙串存储

    2017.11.20 14:41* 字数 227 阅读 678评论 0喜欢 0 钥匙串介绍   1. 表示设备唯一号的标识,在IOS7中要么被禁止使用,要么重新安装程序后两次获取的标识符不一样. 2. ...

  6. IOS数据存储5种方式

    iOS中的数据存储(上) iOS应用数据存储的常用方式: 应用沙盒: 应用沙盒结构分析 Documents: temp: Library/Caches: Library/Preference: 沙盒根 ...

  7. mysql棋牌管理_棋牌架构DB服务(Mysql+Redis)数据存储演进笔记

    自新项目开展以来,需要接触与数据存储打交道那一块业务,以前的项目开发过程中因为写的都是棋牌玩法相关的业务逻辑,虽然也私下看过DB服务代码,但是当时对数据库与缓存的理解还是停留在语法使用层面,所以对DB ...

  8. IOS数据存储 —— 1 沙盒(数据存储目录)

    沙盒结构 沙盒的文件系统⽬录,如下图所示(假设应用的名称叫Layer) 1.Documents 目录 您应该将所有的应用程序数据文件写入到这个目录下. 这个目录用于存储用户数据或其它应该定期备份的信息 ...

  9. JS高级——JSON、数据存储学习笔记

    在目前的开发中,JSON是一种非常重要的数据格式,它并不是编程语言,而是一种可以在服务器和客户端之间传输的数据格式. JSON的全称是JavaScript Object Notation(JavaSc ...

最新文章

  1. 吵疯了,Pull Request到底是个啥?
  2. 分享一下我的初中生活
  3. Android SystemProperties设置/取得系统属性的用法总结
  4. 安装phpcms时出现Warning: ob_start(): output handler \'ob_gzhandler\' conflicts with \'zlib
  5. 新手上路之django项目开发(一)-----创建项目并运行
  6. Mac OS X下查看CPU信息
  7. 在大公司天天调参数,感觉快废了~
  8. Javascript Math ceil()、floor()、round()三个函数的区别
  9. 链表冒泡排序java_055-冒泡排序算法代码实现
  10. 移动端,h5页面1px 1像素边框过粗解决方案
  11. 高通QCC3005_datasheet
  12. ORBSLAM3 的改进
  13. android ntp服务器配置
  14. 网络安全:IP地址定位方式
  15. 《Rework》摘录及感想
  16. 户外LED透明屏与室内透明屏区别,选型号建议
  17. Flask-定时任务
  18. 计算机自带的加密,加密,详细教您如何用自带Bitlocker来为电脑磁盘加密
  19. 关于kernels启动报错的问题
  20. vi编辑器中的常用命令

热门文章

  1. python用中文怎么说-如何用Python做中文分词?
  2. python下载安装教程3.7.3-【最新】Python-3.7.0安装教程及下载链接
  3. python turtle画熊-基于turtle的Python作画
  4. python画图颜色-python中matplotlib的颜色及线条控制的示例
  5. python下载了怎么打开-下载python后如何启动
  6. python百度网盘-bypy-百度网盘Python客户端 linux
  7. python教学网站-自学python有什么网站
  8. python的用途实例-python中类方法,实例方法,静态方法的作用和区别
  9. python csv读取-python如何读取csv数据
  10. python turtle画彩虹-Python turtle 绘制彩色螺旋线