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),文件,数据库,归档..前三种比较经常用到,第四种归档我个人感觉用的还是比较少的,恰恰因为用 ...
随机推荐
- oracle:jdbcTest
JDBC连接数据库 •创建一个以JDBC连接数据库的程序,包含7个步骤: 1.加载JDBC驱动程序: 在连接数据库之前,首先要加载想要连接的数据库的驱动到JVM(Java虚拟机), 这通过java.l ...
- 5 Ways to Learn and Remember Absolutely Anything
http://www.inc.com/quora/5-ways-to-learn-and-remember-absolutely-anything.html Start too early on th ...
- GUI异步编程之BackgroundWorker类
GUI编程中,经常需要另建一个线程,在后台运行以完成某项工作,并不时地与界面主线程进行通信,以改变界面显示.BackgroundWorker类为此而生. BackgroundWorker类的主要成员: ...
- Muzei Live Wallpaper壁纸应用安卓源码项目
这个刚刚在安卓教程网那里看到的,这个是Muzei Live Wallpaper壁纸应用源码,这是已经在Playstore上线了的android壁纸应用,点击壁纸界面可以磨砂透明效果以及一般背景效果之间 ...
- 简单linux网络驱动程序
本文代码参考<LINUX设备驱动程序>第十七章 网络驱动程序 网络地址和虚拟主机地址为: snullnet0 192.168.0.0 snullnet1 192.168.1.0 local ...
- POJ C程序设计进阶 编程题#4:括号匹配问题
编程题#4:扩号匹配问题 来源: POJ(Coursera声明:在POJ上完成的习题将不会计入Coursera的最后成绩.) 注意: 总时间限制: 1000ms 内存限制: 65536kB 描述 在某 ...
- Android照相机应用
前言 Android在设计架构的时候,采用了mashup(混搭)的设计理念,也就是说一切都是组建,自己写的是组件,别人提供的也是组件,使用的时候只要符合相关协议就可以把他们当作自己的组件.比如系统提供 ...
- API - .addBack()
从jQuery官网上提供的Example来看,这个API的意思是: 1 先圈定一个范围,[A] $( "div.after-addback" ) 2 再用find过滤一出一个更 ...
- jQuery学习笔记(6)--复选框控制表格行高亮
<html xmlns="http://www.w3.org/1999/xhtml"> <head runat="server"> &l ...
- masterha_check_repl报错汇总
[root@DBMysql ~]#masterha_check_repl --conf=/etc/masterha/app1.cnf 导致如下报错的原因主要有两类: 1.mysql的安装时用源码安装, ...