数据持久化

什么是数据持久化?

数据的永久存储

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

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

一、沙盒机制

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

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

每个应用程序在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. 由多次使用Statement实例引起的Result set already closed异常的解决方案

    在不同版本的Weblogic平台上迁移应用,产生了很严重的JDBC驱动版本不兼容的问题. 但是归根究底是代码的问题,废话少说,上代码示例. ..... //以下是问题代码 ResultSet rs=n ...

  2. 学习总结 java 父子级

    package com.hanqi; //父类 public class Father { // public Father() // { // // } // public Father(Strin ...

  3. 二模09day2解题报告

    T1.domino骨牌 n张有黑有白的骨牌排一排,连续三张同色排一起就不好看,求共多少方案不好看. 分析一下,f[3]=2,f[4]=6,f[n]:如果n-1==n 那么方案数为f[n-2],如果不同 ...

  4. cordova 开发属于自己的插件---android

    还是需要开发出自己的插件的... 我的cordova  version is 4.0.0 1.需要新建一个文件夹为 myplugin 1.1在myplugin文件夹下 新建 plugin.xml文件 ...

  5. Loadrunner:POP3协议录制收信,使用foxmail录制到的脚本为空

    以下录制方法使得录制到的脚本为空: (1)打开Virtual User Generator,点击“新建Vuser脚本”,在弹出的向导页面,选择“新建单协议脚本”,选择“POP3”协议,并确定 (2)在 ...

  6. Spring MVC防御CSRF、XSS和SQL注入攻击

    参考: http://www.myhack58.com/Article/html/3/7/2012/36142_6.htm http://blog.csdn.net/jasontome/article ...

  7. Javascript 常用系统内置函数

    1:在数组指定位置插入元素 array.splice(2, 0, "three");   //在索引2的位置,删除0个元素后,插入元素“three” 例子: // 原来的数组 va ...

  8. C#虚方法和覆写方法

  9. 破解金盘gdlisxp系统

    1.现在要破解的金盘gdlisxp系统版本 2.首先在你电脑上要有脱壳工具AspackDie,和OllyDBG动态调试工具,电脑上装好金盘软件. 3.用AspackDie进行对金盘应用程序脱壳处理,生 ...

  10. css中li、a、span行内强制不换行

    li.a.span行内强制不换行:white-space:nowrap; 没有之前的效果 加上white-space:nowrap;后