iOS 数据存储之我见

引言:

iOS的数据存储与缓存涉及到的知识方方面面,有蛮多需要去好好了解了解,那么做为移动设备的应用,离线数据的重要性,相对于PC应用显得重要的多.

文中介绍的方法,不一定都是最好的,但都是目前博主都在使用的技术,如果有更好的方法和技术,不吝赐教!

参考资料: 

1:使用Keychain存储用户敏感信息

http://blog.csdn.net/tianyitianyi1/article/details/7643365

2:NSUserDefaults简介及使用

http://qing.blog.sina.com.cn/2739139371/a343f32b33001kpq.html

介绍:

1: KeyChain 

KeyChain是用于在iOS中存储敏感信息时的一个推荐型方案.

如果直接使用其API,还是非常繁琐的,为此网上已经有牛人,对此其API进行了封装,我们学会使用就行了.  

两部操作即可:

第一步:引入系统框架文件  Security.framework

第二步:导入开源框架 SFHFKeychainUtils 

参考链接中有源代码下载地址,这里就不提供了, 

那么我这里提供一个 我使用过后的一个优化版:Demo

使用非常简单, 4个方法:添加,删除,查询,查询全部 

注:KeyChain的信息存储不会因为App的被删除而丢失数据,这个有点类似Windows的注册表的概念差不多.

2:Property List (熟称的Plist)

Property List是在App里面存储一些较为简单且零散的键值对的一个推荐型方法

以下代码 分别用于创建或修改Property List文件内部值:

//通过文件路径获取
NSMutableDictionary *attachmentInfoDictionary  = [[NSMutableDictionary alloc] initWithContentsOfFile:attachmentInfoPathString];
//判断是否成功从指定的路径中取到Plist 文件,如果没有,则实例化一个新的供写入
if (attachmentInfoDictionary == nil) {
    attachmentInfoDictionary = [[NSMutableDictionary alloc] init];
}
[attachmentInfoDictionary setObject:@"值" forKey:@"键"];
NSLog(@"%@",attachmentInfoDictionary);
//返回是否写入成功  但是需要确保指定的路径结构存在,否则肯定失败
[attachmentInfoDictionary writeToFile:attachmentInfoPathString atomically:NO];
[attachmentInfoDictionary release];

3:NSUserDefaults

NSUserDefaults是系统级Property List文件,里面存储一些App配置参数,当然,我们也可以加一些自己的值进行,用户和Property
List
几乎一样

1:查询NSUserDefaults 里面全部存储的值,这里面可以看到我们开发时存储的:

[[NSUserDefaults standardUserDefaults] dictionaryRepresentation]

2:当对NSUserDefaults 修改的值以后,需要调用同步函数实现数据持久化

[[NSUserDefaults standardUserDefaults] synchronize];

4:Core Data

Core Data是对SQLite的封装,以面向对象的方式与本地数据库进行数据交互

Core Data的介绍参考这篇文章.

5:StackMob

StackMob是专为移动App打造的后端云存储解决方案,是博主大力推荐使用的Baas平台

StackMob的使用参考这篇文章.

6:SQLite

SQLite 的使用参考FEDM

总结:

信息化离不开数据

时间: 2024-09-19 09:51:48

iOS 数据存储之我见的相关文章

详解iOS的数据存储_IOS

iOS应用数据存储的常用方式     1.XML属性列表(plist)归档.     2.Preference(偏好设置).     3.NSKeyedArchiver归档.     4.SQLite3     5.Core Data 应用沙盒 每个iOS应用都有自己的应用沙盒(应用沙盒就是文件系统目录)与其他文件系统隔离.应用必须待在自己的沙盒里,其他应用不能访问该沙盒. 模拟器应用沙盒的根路径在: (apple是用户名, 6.0是模拟器版本) /Users/apple/Library/App

对比iOS中的四种数据存储

你是用什么方法来持久保存数据的?这是在几乎每一次关于iOS技术的交流或讨论都会被提到的问题,而且 大家对这个问题的热情持续高涨.本文主要从概念上把"数据存储"这个问题进行剖析,并且结合各自特点和 适用场景给大家提供一个选择的思路,并不详细介绍某一种方式的技术细节. 谈到数据储存,首先要 明确区分两个概念,数据结构和储存方式.所谓数据结构就是数据存在的形式.除了基本的NSDictionary. NSArray和NSSet这些对象,还有更复杂的如:关系模型.对象图和属性列表多种结构.而存储

iOS网络编程入门:iCloud键值数据存储编程实例

iCloud键值数据存储设计 iCloud键值数据存储编程实例,画面中有两个开关控件,左图是设备1点击"设置iCloud数据"按钮,将控件状态保存到iCloud服务器.右图是设备2画面,过几秒钟后设备2收到变更通知. 配置Xcode工程 使用Xcode创建一个iOS工程,工程创建好之后,选择TAGETS→MyNotes→Summary→Entitlements,我们可以在这里配置授权信息. 然后我们还需要应用设置代码签名标识,代码签名标识需要选择这个配置概要文件的.选择TAGETS→M

IOS开发:FMDB数据存储解析

  FMDB是面向对象的,它以OC的方式封装了SQLite的C语言API,使用起来更加的方便,不需要过多的关心数据库操作的知识.但是它本身也存在一些问题,比如跨平台,因为它是用oc的语言封装的,所以只能在ios开发的时候使用,如果想实现跨平台的操作,来降低开发的成本和维护的成本,就需要使用比较原始的SQLite. FMDB是用于进行数据存储的第三方的框架,它与SQLite与Core Data相比较,存在很多优势. Core Data是ORM的一种体现,使用Core Data需要用到模型数据的转化

iOS开发UI篇—ios应用数据存储方式(偏好设置)

一.简单介绍 很多iOS应用都支持偏好设置,比如保存用户名.密码.字体大小等设置,iOS提供了一套标准的解决方案来为应用加入偏好设置功能 每个应用都有个NSUserDefaults实例,通过它来存取偏好设置.比如,保存用户名.字体大小.是否自动登录 存储位置: 存储形式: 二.代码示例 1.storyboard 2.代码 1 // 2 // YYViewController.m 3 // 01-偏好设置 4 // 5 // Created by apple on 14-6-7. 6 // Cop

iOS开发UI篇—ios应用数据存储方式(XML属性列表-plist)

一.ios应用常用的数据存储方式 1.plist(XML属性列表归档) 2.偏好设置 3.NSKeydeArchiver归档(存储自定义对象) 4.SQLite3(数据库,关系型数据库,不能直接存储对象,要编写一些数据库的语句,将对象拆开存储) 5.Core Data(对象型的数据库,把内部环节屏蔽) 二.应用沙盒 每个iOS应用都有⾃己的应⽤沙盒(应用沙盒就是文件系统目录),与其他文件系统隔离.应⽤必须待在⾃己的沙盒里,其他应用不能访问该沙盒(提示:在IOS8中已经开放访问) 应⽤沙盒的文件系

《iOS取证实战:调查、分析与移动安全》一3.4 数据存储方式

3.4 数据存储方式 iPhone上的数据以很多方式进行存储.下面的小节涵盖了每一个数据存储的形式以供审查者了解潜在的证据如何定位或恢复. 内部存储: SQLite 数据库文件: 属性列表: 网络: 其他. 3.4.1 内部存储 大多数的码分多址(CDMA)设备都有SD卡插槽,但是iPhone不一样,它没有任何形式的外部存储器(除了SIM卡之外).iPhone中所有的数据都存储在内部NAND闪存中.本章后面的3.7.3节中提到的slice 2(或者称为rdisk0s2)存储了这些用户数据文件,设

iOS网络编程-iCloud键值数据存储编程实例

iCloud键值数据存储设计 iCloud键值数据存储编程实例,画面中有两个开关控件,左图是设备1点击"设置iCloud数据"按钮,将控件状态保存到iCloud服务器.右图是设备2画面,过几秒钟后设备2收到变更通知.     配置Xcode工程 使用Xcode创建一个iOS工程,工程创建好之后,选择TAGETS→MyNotes→Summary→Entitlements,我们可以在这里配置授权信息. 然后我们还需要应用设置代码签名标识,代码签名标识需要选择这个配置概要文件的.选择TAGE

iOS数据持久化之二——归档与设计可存储化的数据模型基类

iOS数据持久化之二--归档与设计可存储化的数据模型基类 一.引言         在上一篇博客中,我们介绍了用plist文件进行数据持久化的方法.虽然简单易用,但随着开发的深入,你会发现,这种方式还是有很大的局限性.试想,如果我们可以将用户的登录返回信息模型,游戏中角色的属性信息模型进行直接的持久化存取,那是不是非常爽的事,幸运的是,我们可以通过归档,来设计一个这样的数据模型. 二.先来精通归档吧         归档也是iOS提供给开发者的一种数据存储的方式,事实上,几乎所有的数据类型都可以