最近做的音乐播放器,用了太多的数据存储。在各种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. OSCLI

  2. Android应用开发学习之Toast消息提示框

    作者:刘昊昱 博客:http://blog.csdn.net/liuhaoyutz 本文我们来看Toast消息提示框的用法.使用Toast消息提示框一般有三个步骤: 1.  创建一个Toast对象.可 ...

  3. SpringMVC学习系列- 表单验证

    本篇我们来学习Spring MVC表单标签的使用,借助于Spring MVC提供的表单标签可以让我们在视图上展示WebModel中的数据更加轻松. 一.首先我们先做一个简单了例子来对Spring MV ...

  4. 用dTree组件生成无限级导航树

     在做管理系统时不可避免要用到导航树,这种东西只要一次做好,就可以随处运行,目前比较好的组件是dTree,原则上可以达到无限级,当然实际运行中4,5级就已经很多了,dTree的速度还是不错的,而且是J ...

  5. Spring 反转控制(IOC) 依赖注入(DI)

    简单的理解: 之前是我为了完成业务A 需要某个对象B的支持 那么我在这个业务A中就会创建一个对象B使用,说白了就是我根据需求来控制对象B, 而spring的ioc把对象B的控制权从业务A手中拿到自己手 ...

  6. SQLLoader8(加载的数据中有换行符处理方法)

    SQLLDR加载的数据中有换行符处理方法1.创建测试表: CREATE TABLE MANAGER( MGRNO NUMBER, MNAME ), JOB ), REMARK ) ); 2.创建控制文 ...

  7. [Spring入门学习笔记][创建网站URL]

    设计网站的URL 现代的Web站点都会设计一套拥有明确意义,方便用户记忆的URL,不论是域名还是路径,以天码营为例: http://tianmaying.com/courses表示网站下所有的课程列表 ...

  8. 一般处理程序、ASP.NET核心知识(5)--转载

    初窥 1.新建一个一般处理程序 新建一个一般处理程序 2.看看里头的代码 public class MyHandler : IHttpHandler { public void ProcessRequ ...

  9. .Net Errors

    1.Unknown column 'Extent1.Discriminator' in 'field list' Resole:http://blog.csdn.net/philip502/artic ...

  10. SQL Server -SET ANSI_NULLS

    当ANSI_NULLS 为ON时,遵循SQL92的标准,只能使用IS NULL 来判断值是否为NULL, 而不能使用=或<>来与NULL做比较,任何值包括NULL值与NULL值做=或< ...