iOS数据存储的方式总结

iOS沙盒目录下有四个文件夹。分别是:

-Documents:应该将所有的应用程序数据文件写入到这个目录下。这个目录用于存储用户数据或其它应该定期备份的信息。
-AppName.app:这是应用程序的程序包目录,包含应用程序的本身。由于应用程序必须经过签名,所以您在运行时不能对这个目录中的内容进行修改,否则可能会使应用程序无法启动。
-Library:这个目录下有两个子目录:Caches 和 Preferences
Preferences:包含应用程序的偏好设置文件。您不应该直接创建偏好设置文件,而是应该使用NSUserDefaults类来取得和设置应用程序的偏好.
Caches:用于存放应用程序专用的支持文件,保存应用程序再次启动过程中需要的信息。

-tmp :这个目录用于存放临时文件,保存应用程序再次启动过程中不需要的信息。

对于数据的持久化存储,iOS中一般提供了4种不同的机制。
1.NSUserDefaults
2.对象归档
3.数据库存储(SQLite)
4.Core Data

1.NSUserDefaults

在iOS开发中,对于少量的用户设置或应用程序状态的数据,通常使用NSUserDefaults来保存。
NSUserDefaults支持的数据格式有:NSNumber(Integer、Float、Double),NSString,NSDate,NSArray,NSDictionary,BOOL类型。

2.对象归档

使用两个类:NSKeyedArichiver、NSKeyedUnarchiver

可以用 NSKeyedArchiver 类来实现数据模型缓存。

为了把模型对象用 NSKeyedArchiver 归档, 模型类需要遵循 NSCoding 协议。

NSCoding 协议方法

-(void)encodeWithCoder:(NSCoder *)aCoder;
-(id)initWithCoder:(NSCoder *)aDecoder; 
当模型遵循 NSCoding 协议时,归档对象就很简单,只要调用下列方法中的一个:
 [NSKeyedArchiver archiveRootObject:objectForArchiving toFile:archiveFilePath]; 
 [NSKeyedArchiver archivedDataWithRootObject:objectForArchiving]; 
第一个方法在 archiveFilePath 指定的路径下创建一个归档文件。
第二个方法则返回一个 NSData 对象。NSData 通常更快,因为没有文件访问开销,但对象保存在应用的内存中,如果不定期检查的话会很快用完内存。

NSKeyedUnarchiver 类用于从文件(或者 NSData 指针)反归档模型。

根据反归档的位置,选择使用下面两个类方法。

[NSKeyedUnarchiver unarchiveObjectWithData:data]; 
 [NSKeyedUnarchiver unarchiveObjectWithFile:archiveFilePath]; 
这 4 个方法在转化序列化数据时能派上用场。 
使用任何 NSKeyedArchiver/NSKeyedUnarchiver 的前提是模型实现了 NSCoding 协议。

3. 数据库存储(SQLite)

和Android一样,iOS中也是用了SQLite这种嵌入式数据库。

SQLite 是一个轻量级的关系数据库。在使用时,只需要加入 libsqlite3.dylib 依赖以及引入 sqlite3.h 头文件即可。FMDB 是将SQLite API进行封装的库,是开源社区中的优秀者。

FMDB同时兼容ARC和非ARC工程,会自动根据工程配置来调整相关的内存管理代码。

使用fmdb可以参考github上的项目说明文档: https://github.com/ccgus/fmdb

4.Core Data

暂时还未使用过,待研究学习。

时间: 2024-10-29 10:46:34

iOS数据存储的方式总结的相关文章

iOS数据存储的几种方式

iOS的数据存储是iOS应用开发的重要知识点: 关于这方面知识,网上有很多介绍,但对于代码层次的使用方式并未有系统全面介绍.此文章针对iOS稍熟悉的童鞋,需要对CoreData的原理有一定的了解.目前存储方式大概有以下几种: NSKeyedArchiver  适用简单数据加密 NSUserDefaults  适用配置参数 Write  文件操作,同NSKeyedArchiver SQLite3  操作较复杂,不建议使用. CoreData  取代SQLite3,但要遵循NSManagedObje

IOS数据存储 —— 2 存储方式

IOS数据存储方式 iOS开发常用数据存储方式有:plist.偏好设置 NSUserDefaults.对象归档 NSKeyedArchiver.SQLite3和Core Data 1. plist文件 存储 plist文件通常用于储存用户设置,利用xml属性列表归档NSDictionary.NSArray.NSNumber等类型数据 在使用plist进行数据存储和读取,只适用于系统自带的一些常用类型才能用 注意:plist不能存储自定义对象 2. 偏好设置 NSUserDefaults 偏好设置

UI进阶--iOS中的数据存储常用方式

iOS中的数据存储常用方式: 1.xml属性列表(plist): 2.preference偏好设置; 3.NSKeyedArchiver归档(需要遵守NSCodeing协议); 4.SQLite 3; 5.Core Data; ...... 应用沙盒: 每个iOS应用都有?己的应?沙盒(应用沙盒就是文件系统目录),与其他文件系统隔离.应?必须待在?己的沙盒里,其他应用不能访问该沙盒(提示:在IOS8中已经开放访问) 应?沙盒的文件系统?录,如下图所示(假设应用的名称叫Layer) 模拟器应?用沙

iOS数据存储之CoreData

iOS中大量数据的储存一个是SqLite,另一个就是CoreData,CoreData允许程序员以面向对象的思维方式的方法去操作面向表的数据库 做过Java开发的对这个应该很熟悉,Java中的Hibernate跟CoreData就很相似 CoreData应该怎样使用呢? 第一步,新建工程后导入CoreData框架 第二部,创建CoreData的数据模型创建步骤如下 然后给你的model起个名字,创建完成后你会看到一个这个文件(相当于数据库文件) 点击这个文件,然后看下图 点击图中1,新建实体(类

iOS数据存储之SqLite3

iOS中数据存储的方式有很多中,当数据量较大的时候偏好设置,归档和plist就无法满足需求了 这时候就需要用SqLite或者CoreData来存储数据 下面就来介绍一下如何使用SqLite存储数据 要使用Sqlite必须引入libSqlite3.dylib库 要使用首先要有一个handle句柄(handle句柄,在C语言中,通常把用于控制某类东西的叫做句柄,实际上是一个指针.) // 数据库句柄 sqlite3 *_db; SqLite存储数据时也是存在一个文件中的,只不过这个文件格式是定制的,

iOS数据存储之属性列表理解

iOS数据存储之属性列表理解 数据存储简介 数据存储,即数据持久化,是指以何种方式保存应用程序的数据. 我的理解是,开发了一款应用之后,应用在内存中运行时会产生很多数据,这些数据在程序运行时和程序一起驻留在内存中,一旦程序运行结束从内存中退出后,这些数据也就相应消失了.等到再次运行程序的时候,之前的那些数据又要重新计算.但是对于一些应用,我们需要将程序产生的数据持久的保存起来,使得应用重启之后这些数据不会丢失,这时候就需要用到数据的持久化技术. 在iOS设备上实现数据持久化存储的方式有很多中机制

iOS 数据存储 - 01基本介绍

1.应用沙盒 sandbox 1. 什么是沙盒 每个iOS应用都有自己的应用沙盒(应用沙盒就是应用的文件夹),与其他文件系统隔离.应用必须待在自己的沙盒里,其他应用不能访问该沙盒. 2.应用沙盒结构 应用程序包: 包含了所有的 资源文件和 可执行文件 Documents: 保存应用运行时生成的需要持久化的数据,iTunes同步设备时会备份该目录.例如,游戏应用可将游戏存档保存在该目录.保存相对重要的数据 tmp: 保存应用运行时所需的临时数据,使用完毕后再将相应的文件从该目录删除.应用没有运行时

iOS数据存储类型 及 堆(heap)和栈(stack)

iOS数据存储类型 及 堆(heap)和栈(stack) 一般认为在c中分为这几个存储区: 1栈 --  由编译器自动分配释放. 2堆 --  一般由程序员分配释放,若程序员不释放,程序结束时可能由OS回收. 3全局区(静态存储区)-- 全局变量和静态变量的存储是放在一块区域 ,程序退出后自动释放 .全局区又分为全局初始化区和全局未初始化区.初始化的全局变量和静态变量存放在全局初始化区,未初始化的全局变量和未初始化的静态变量存放在相邻的另一块区域. 4常量区-- 专门放数字/字符常量的地方, 程

IOS数据存储方式

1,ios中常用的数据存储方式有4中 1>XML属性列表(plist)归档 2>Preference(偏好设置) 3>NSKeyedArchiver归档 4>SQLite 2,每个应用程序都有自己的沙盒,沙河的路径为 /Users/apple/Library/Application Support/iPhone Simulator/7.0/Applications(apple为用户名,7.0位模拟器版本) 每个应用沙河都是独立的,里面的结构主要有: Document:这个主要用来保