数据持久化

什么是数据持久化?

数据的永久存储

为什么要做数据持久化:;存储在内存中的数据,程序关闭,内存释放,数据丢失,这种数据是临时的

数据持久化的本质:数据保存成文件,存储到程序的沙盒中

一、沙盒机制

每个应用程序位于文件系统的严格限制部分

每个应用程序只能在为该程序创建的文件系统中读取文件

每个应用程序在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 初级数据持久化的更多相关文章

  1. iOS初级数据持久化 沙盒机制 归档与反归档

    数据持久化就是数据保存成文件,存储到程序中的沙盒中. 沙盒构成 Document 存储用户数据,需要备份的信息 Caches 缓存文件, 程序专用的支持文件 Temp 临时文件 通过代码查找程序沙盒的 ...

  2. iOS 数据持久化(扩展知识:模糊背景效果和密码保护功能)

    本篇随笔除了介绍 iOS 数据持久化知识之外,还贯穿了以下内容: (1)自定义 TableView,结合 block 从 ViewController 中分离出 View,轻 ViewControll ...

  3. iOS开发笔记-swift实现iOS数据持久化之归档NSKeyedArchiver

    IOS数据持久化的方式分为三种: 属性列表 (plist.NSUserDefaults) 归档 (NSKeyedArchiver) 数据库 (SQLite.Core Data.第三方类库等 归档(又名 ...

  4. IOS数据持久化之归档NSKeyedArchiver

    IOS数据持久化的方式分为三种: 属性列表 (自定义的Property List .NSUserDefaults) 归档 (NSKeyedArchiver) 数据库 (SQLite.Core Data ...

  5. iOS -数据持久化方式-以真实项目讲解

    前面已经讲解了SQLite,FMDB以及CoreData的基本操作和代码讲解(CoreData也在不断学习中,上篇博客也会不断更新中).本篇我们将讲述在实际开发中,所使用的iOS数据持久化的方式以及怎 ...

  6. iOS数据持久化方式及class_copyIvarList与class_copyPropertyList的区别

    iOS数据持久化方式:plist文件(属性列表)preference(偏好设置)NSKeyedArchiver(归档)SQLite3CoreData沙盒:iOS程序默认情况下只能访问自己的程序目录,这 ...

  7. iOS数据持久化-OC

    沙盒详解 1.IOS沙盒机制 IOS应用程序只能在为该改程序创建的文件系统中读取文件,不可以去其它地方访问,此区域被成为沙盒,所以所有的非代码文件都要保存在此,例如图像,图标,声音,映像,属性列表,文 ...

  8. iOS数据持久化

    在iOS中,实现数据持久化一般分为4大种: 1.属性列表 2.对象归档 3.SQLite 4.Core Data 一.属性列表 NSUserDefaults类的使用和NSKeyedArchiver有很 ...

  9. iOS数据持久化存储:归档

    在平时的iOS开发中,我们经常用到的数据持久化存储方式大概主要有:NSUserDefaults(plist),文件,数据库,归档..前三种比较经常用到,第四种归档我个人感觉用的还是比较少的,恰恰因为用 ...

随机推荐

  1. 学习练习 session练习

    <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding= ...

  2. java基础回顾(五)——Stack、Heap

    栈(stack):是简单的数据结构,但在计算机中使用广泛.栈最显著的特征是:LIFO(Last In, First Out,后进先出).比如我们往箱子里面放衣服,先放入的在最下方,只有拿出后来放入的才 ...

  3. 【drp 10】JSP页面中model1和model2的区别

    一.基本概念 1.1,model1 model1的开发模式是:jsp+javabean的模式,它的核心是JSP页面,在这个页面中,jsp页面负责整合页面和javabean(业务逻辑),而且渲染页面.它 ...

  4. swing 复选框

    通过   box1 和 box2的  public boolean isSelected()的方法 返回按钮的状态. 如果选定了切换按钮,则返回 true,否则返回 false.

  5. OpenGL ES 中Uniform块

    1.采用uniform Block的原因如果你的程序中包含了多个着色器,而且这些着色器使用了相同的Uniform变量,你就不得不为每个着色器分别管理这些变量.Uniform变量的location是在程 ...

  6. 【IHttpHandler】ASP.NET 生命周期

    对由 Microsoft® Internet 信息服务 (IIS) 处理的 Microsoft® ASP.NET 页面的每个请求都会被移交到 ASP.NET HTTP 管道.HTTP 管道由一系列托管 ...

  7. maven auto-config 多环境自动打包

    摘自:http://doc.okbase.net/bjhecwq/archive/118121.html maven有许多优秀的插件,最近在研究打包中替换多重环境的配置,同事介绍使用阿里的auto-c ...

  8. 中间人攻击破解HTTPS传输内容

    最近App安全受到不小的關注,有人問我,說某某App不安全,究竟是真的還假的啊...所謂有被攻擊的風險,是不是危言聳聽,只是為了嚇人來著的? 現在就來為各位說明一下,是怎麼個不安全法.就來說說攻擊是怎 ...

  9. hdu1506

    today, my cc can't make '__in64' it's so bad!!! i don't know why #include <stdio.h> //long lon ...

  10. (图 BFS)走迷宫

    题目: 给一个迷宫,求出从起点到终点的路径.迷宫 src.txt 文件内容如下,第一行是迷宫的行列数,后面行是迷宫,1表示可行走,0表示不可以通过,起点是最左上角,终点是最右下角: 解析: 其实就是图 ...