最近做的音乐播放器,用了太多的数据存储。在各种APP中无可避免的要用到数据存储。在IOS中,给了很多办法进行数据持久化。但是万宗不离其变,都是要存储到本地中,IOS提供了沙盒机制,沙盒有多大呢???这个我也不知道,看你自己手机内存多大了。

数据存储大体的有这几种。

1, 数据库。

   在MAC 和 IPHONE中都是集成了SQLite, 用的时候也方便,并且这个也是开源的,移植性也很高。

    系统也集成了SQLite3 这个类进行操作数据库。当然,使用还有有一定复杂的,这里推荐使用FMDB,这个第三方类库,进行数据库操作,哈哈,你得会SQL语句,   这里推荐一下大神们的博客,SQL语句,足够基本使用的。http://www.cnblogs.com/yubinfeng/archive/2010/11/02/1867386.html。

   数据库,我感觉特别在某一个项目要提前嵌入大量的数据,用这个会比较不错,管理也比较方便。管理工具推荐一下:火狐浏览器自带的SQL Manager

    对于用数据库的时候,特别要注意几点, ~1,数据库在增加到项目中后,如果想对其进行操作,必须把他复制到沙盒中才能进行读写。

                       ~2,对数据库每次增加了一个column, table, 增加数据,都要先进入沙盒中把数据库文件删除,可不要把项目中得数                       据库给删除了,哈哈。

2. 直接存储文件。 在OC中,如果你存储一个文件不对其进行标示后缀名的话,系统默认存储plist文件, plist文件是一个字典类型的,朋友们可以看一下,这个文件具体打开什么情况。 这个可以直接存,例如数组, 字典都是可以的。 另外也可以指定文件后缀名自,例如.mp3, .txt 等等。

这个使用的场景,不好说,看自己的业务逻辑需求了。 主要就是看沙盒下的文件。

Documents:苹果建议将程序中建立的或在程序中浏览到的文件数据保存在该目录下,iTunes备份和恢复的时候会包括此目录

Library:存储程序的默认设置或其它状态信息;

Library/Caches:存放缓存文件,iTunes不会备份此目录,此目录下文件不会在应用退出删除

tmp:提供一个即时创建临时文件的地方。

3. nsuserdefault ,这是一个特殊的plist文件, 程序中就自带了, 很简单,用这个类下的一个单例方法就好了。就能获取这个文件,不需要自己创建。这个办法使用适用与存储一些简答的东西,例如程序的设置,收藏的东西等。

至于用法,可以参照API,很简单地使用。 然后做这个的时候会遇到一个问题,数据无法存储,我最早用的时候就遇到过这个问题,当时纠结了很久,各种找资料,原来需要同步一下,OK,调用一下同步的方法.

附上一个简单的代码。

1、获取一个NSUserDefaults引用:

NSUserDefaults *userDefaults = [NSUserDefaults standardUserDefaults];

2、保存数据

[userDefaults setInteger:1 forKey:@"segment"];

[userDefaults synchronize];  //立即同步的方法,每次更改后需要调用一下

3、读取数据

int i = [userDefaults integerForKey:@"segment"];

4. core data , 这是苹果官方推荐的一个数据存储方案。 至于这个,使用还是不错的,可以存储为SQLite文件,也可以存储为xml文件。但是使用这个会遇到问题的,就是更新的问题,这个是很麻烦的,所以我一般不会使用的。至于使用,推荐一下一个博客    http://www.cocoachina.com/iphonedev/sdk/2010/1126/2397.html

< IOS > 论苹果数据持久化。的更多相关文章

  1. IOS开发中数据持久化的几种方法--NSUserDefaults

    IOS开发中数据持久化的几种方法--NSUserDefaults IOS 开发中,经常会遇到需要把一些数据保存在本地的情况,那么这个时候我们有以下几种可以选择的方案: 一.使用NSUserDefaul ...

  2. iOS中的数据持久化方式

    iOS中的数据持久化方式,基本上有以下四种:属性列表.对象归档.SQLite3和Core Data. 1.属性列表 涉及到的主要类:NSUserDefaults,一般 [NSUserDefaults ...

  3. IOS学习:ios中的数据持久化初级(文件、xml、json、sqlite、CoreData)

    IOS学习:ios中的数据持久化初级(文件.xml.json.sqlite.CoreData) 分类: ios开发学习2013-05-30 10:03 2316人阅读 评论(2) 收藏 举报 iOSX ...

  4. iOS学习之数据持久化详解

    前言 持久存储是一种非易失性存储,在重启设备时也不会丢失数据.Cocoa框架提供了几种数据持久化机制: 1)属性列表: 2)对象归档: 3)iOS的嵌入式关系数据库SQLite3: 4)Core Da ...

  5. iOS开发中数据持久化

    使用几个小例子分别实现 归档NSKeyedArchiver.NSUserDefaults.plist文件数据存储,简单直观.代码地址

  6. iOS中常用的四种数据持久化技术

    iOS中的数据持久化方式,基本上有以下四种:属性列表 对象归档 SQLite3和Core Data 1.属性列表涉及到的主要类:NSUserDefaults,一般 [NSUserDefaults st ...

  7. iOS中常用的四种数据持久化方法简介

    iOS中常用的四种数据持久化方法简介 iOS中的数据持久化方式,基本上有以下四种:属性列表.对象归档.SQLite3和Core Data 1.属性列表涉及到的主要类:NSUserDefaults,一般 ...

  8. iOS面试题--Model层--数据持久化储存方案

    数据持久化储存方案有哪些? iOS中的数据持久化方式,基本上有以下四种:属性列表.对象归档.SQLite3和Core Data 1.属性列表涉及到的主要类:NSUserDefaults,一般 [NSU ...

  9. IOS开发-本地持久化存储sqlite应用

    前言 需求描述 开发测试环境 FMDB介绍 创建工程 一.前言 上一章介绍了如何开发一个IOS应用的入门案例教程:                     我的第一个IOS开发应用    本章主要将介 ...

随机推荐

  1. codility上的问题 (22)

    问题描述: 用1 * 1, 1 * 2的矩形覆盖一个n行m列的矩形,问有多少种方法. 数据范围 : n [1..10^6],  m [ 1..7] 要求复杂度: 时间  O(log(n) * 8 ^m ...

  2. 自己实现的简单MVC框架(类似Struts2+Spring)

    一.框架简介 本框架是一个类似于Struts2+Spring的框架,目的在于个人钻研和技术分享,将流行技术框架Struts2.Spring中使用到的主要技术以较为简化的方式实现出来,给大家一个更直观的 ...

  3. PHP mail详细示例

    From:http://php.net/manual/zh/function.mail.php Example #1 Sending mail. Using mail() to send a simp ...

  4. Gray Code 解答

    Question The gray code is a binary numeral system where two successive values differ in only one bit ...

  5. mysql 基础技术

    一.树状结构 参考http://www.cnblogs.com/kingteach/archive/2011/07/05/2098046.html )) begin declare lev int; ...

  6. 创建UIButton

    UIButtonCreate.h #import <UIKit/UIKit.h> @interface UIButtonCreate : UIButton /** * 创建UIButton ...

  7. iOS开发- 界面传值(1)-通知模式(广播)

    之后的几篇博客, 记录下不同界面间传值的经常使用办法. 这篇文章记录广播的方式. iOS的设计模式中,通知模式也是当中重要的模式之中的一个,Notification直译为通知,事实上本人认为叫做广播模 ...

  8. NET基础课--Linq第一讲

    在说LINQ之前必须先说说几个重要的C#语言特性 一:与LINQ有关的语言特性 1.隐式类型 (1)源起 在隐式类型出现之前,在声明一个变量的时候, 总是要为一个变量指定他的类型甚至在foreach一 ...

  9. JQuery 获取指定url对应的html内容

    用jquery的ajax类似的请求就可以了:比如: $.get("test.php", function(data){ alert("Data Loaded: " ...

  10. Ext树控件第一次勾选父节点子节点没选中

    项目中同事提出了这样一个bug 问题: 第一次勾选父节点子节点竟然没选中,逆天了啊 初步分析: 可能是之前代码的逻辑错误造成的,随进入调试阶段... 调试中发现该参数为空(原来写代码的也太没素质了), ...