iOS 初级数据持久化
数据持久化
什么是数据持久化?
数据的永久存储
为什么要做数据持久化:;存储在内存中的数据,程序关闭,内存释放,数据丢失,这种数据是临时的
数据持久化的本质:数据保存成文件,存储到程序的沙盒中
一、沙盒机制
每个应用程序位于文件系统的严格限制部分
每个应用程序只能在为该程序创建的文件系统中读取文件
每个应用程序在iOS系统内都放在了统一的文件夹目录下
沙盒的本质就是一个文件夹,名字是随机分配的,按照UUID标示符标记分配的
沙盒路径的位置
1、通过Finder查找程序沙盒相对路径
~/Library/Application Support/iPhone Simulator
常见问题
模拟器路径内有可能包含多个系统版本的路径
iPhone5及以前版本 32
iPhone5s 64

沙盒构成
Document 存储用户数据,需要备份的信息
Library/Caches 存储缓存文件,程序专用的支持文件
Library/Preferences 存储应用程序的偏好设置文件
.app 程序包(iOS时, app不存储在沙河中,有单独的文件夹存储所有程序的app包)
tmp 存储临时文件。比如:下载的zip包,解压后的再删除
通过代码查找程序沙盒相对路径

获取沙盒目录路径的方法
NSHomeDirectory 沙盒主路径
NSDocumentDirectory Documents文件夹
NSLibraryDirectory Library 文件夹
NSCachesDiectory Caches 文件夹
NSTemporaryDirectory temp文件夹

每个应用程序文件夹内的app文件路径的获取

路径打印结果如下:

二、简单对象写入文件
文件存储的相对目录

字符串对象写入文件
1、字符串对象写入文件

2、数组对象写入文件

3、字典对象写入文件

4、二进制对象写入文件

根据构造出的路径我们通过查找就可以在文件内看到生成的相应文件,如下:


数组和字典中的对象类型必须是上述四种
三、使用NSFileManager来管理文件
NSFileManager,文件管理,使用detaultManager,创建单例对象
可以创建文件夹
可以创建、移动、复制、删除文件
可以判断文件是否存在
具体步骤如下:

四、复杂对象写入文件
什么是复杂对象
1、在Foundation框架内不存在的数据类
2、无法在程序内通过writeToFile类型的方法写入到文件内
3、复杂对象至少包含一个实例对象
复杂对象怎么进行数据持久化,这就涉及到归档和反归档
复杂对象无法通过writeToFile:方法进行数据持久化,只能通过将复杂对象转换为NSData,通过writeToFile:进行数据持久化
通过归档,将复杂对象转换为NSData;通过反归档,将NSData转换为复杂对象
复杂对象写入文件时要遵守NSCoding 协议

例如我们建立一个Person类,使其接受NSCoding协议,同时创建一些Person属性

在对复杂对象进行归档时,执行下面方法

在对复杂对象反归档时,执行下面的方法

复杂对象写入文件(归档和反归档)


iOS 初级数据持久化的更多相关文章
- iOS初级数据持久化 沙盒机制 归档与反归档
数据持久化就是数据保存成文件,存储到程序中的沙盒中. 沙盒构成 Document 存储用户数据,需要备份的信息 Caches 缓存文件, 程序专用的支持文件 Temp 临时文件 通过代码查找程序沙盒的 ...
- iOS 数据持久化(扩展知识:模糊背景效果和密码保护功能)
本篇随笔除了介绍 iOS 数据持久化知识之外,还贯穿了以下内容: (1)自定义 TableView,结合 block 从 ViewController 中分离出 View,轻 ViewControll ...
- iOS开发笔记-swift实现iOS数据持久化之归档NSKeyedArchiver
IOS数据持久化的方式分为三种: 属性列表 (plist.NSUserDefaults) 归档 (NSKeyedArchiver) 数据库 (SQLite.Core Data.第三方类库等 归档(又名 ...
- IOS数据持久化之归档NSKeyedArchiver
IOS数据持久化的方式分为三种: 属性列表 (自定义的Property List .NSUserDefaults) 归档 (NSKeyedArchiver) 数据库 (SQLite.Core Data ...
- iOS -数据持久化方式-以真实项目讲解
前面已经讲解了SQLite,FMDB以及CoreData的基本操作和代码讲解(CoreData也在不断学习中,上篇博客也会不断更新中).本篇我们将讲述在实际开发中,所使用的iOS数据持久化的方式以及怎 ...
- iOS数据持久化方式及class_copyIvarList与class_copyPropertyList的区别
iOS数据持久化方式:plist文件(属性列表)preference(偏好设置)NSKeyedArchiver(归档)SQLite3CoreData沙盒:iOS程序默认情况下只能访问自己的程序目录,这 ...
- iOS数据持久化-OC
沙盒详解 1.IOS沙盒机制 IOS应用程序只能在为该改程序创建的文件系统中读取文件,不可以去其它地方访问,此区域被成为沙盒,所以所有的非代码文件都要保存在此,例如图像,图标,声音,映像,属性列表,文 ...
- iOS数据持久化
在iOS中,实现数据持久化一般分为4大种: 1.属性列表 2.对象归档 3.SQLite 4.Core Data 一.属性列表 NSUserDefaults类的使用和NSKeyedArchiver有很 ...
- iOS数据持久化存储:归档
在平时的iOS开发中,我们经常用到的数据持久化存储方式大概主要有:NSUserDefaults(plist),文件,数据库,归档..前三种比较经常用到,第四种归档我个人感觉用的还是比较少的,恰恰因为用 ...
随机推荐
- Android中各组件的生命周期
1.Activity生命周期图 二.activity三种状态 (1)active:当Activity运行在屏幕前台(处于当前任务活动栈的最上面),此时它获取了焦点能响应用户的操作,属于活动状态,同一个 ...
- SendKeys回车操作类
/************************************************************ FileName: SendKey.cs Description: 模拟键盘 ...
- PHP生成静态页面的方法
在PHP网站开发中为了网站推广和SEO等需要,需要对网站进行全站或局部静态化处理,PHP生成静态HTML页面有多种方法,比如利用PHP模板.缓存 等实现页面静态化,今天就以PHP实例教程形 ...
- spring整合freemarker 自定义标签
1.自定义标签实现 TemplateDirectiveModel 接口 2.spring 配置,注意标红的两行 <bean id="freemarkerConfig" cla ...
- poj1019_Number_Sequence
这题目关键是打表,haha[k]数组表示的是S1S2..Sk该串结尾所在的位置.然后用n去找n所在的k值,此时haha[k-1]<n<=haha[k].然后再算出从haha[k]位置到n一 ...
- css初涉
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...
- .NET中的访问修饰符
.NET中一共有五种访问修饰符 分别是 public 公共的,访问权限最高的. private ...
- ASP.NET MVC5 第4章
参考资料<ASP.NET MVC5 高级编程>第5版 第4章 模型 本章所探讨的模型是要显示.保存.创建.更新和删除的对象. 基架指使用 MVC 提供的工具为每个模型对象的标准索引构建.创 ...
- CentOS 5.x版本升级PHP
#-----------------------------CentOS 5.x版本升级PHP------------------#! /bin/sh #1.关闭selinuxcp -rp /etc/ ...
- 未能正确加载“Microsoft.VisualStudio.Implementation.EditorPackage”包
未能正确加载“Microsoft.VisualStudio.Implementation.EditorPackage”包 未处理ImportCardinalityMismatchException 未 ...