< IOS > 论苹果数据持久化。
最近做的音乐播放器,用了太多的数据存储。在各种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,调用一下同步的方法.
附上一个简单的代码。
NSUserDefaults *userDefaults = [NSUserDefaults standardUserDefaults];
[userDefaults setInteger:1 forKey:@"segment"];
[userDefaults synchronize]; //立即同步的方法,每次更改后需要调用一下
int i = [userDefaults integerForKey:@"segment"];
4. core data , 这是苹果官方推荐的一个数据存储方案。 至于这个,使用还是不错的,可以存储为SQLite文件,也可以存储为xml文件。但是使用这个会遇到问题的,就是更新的问题,这个是很麻烦的,所以我一般不会使用的。至于使用,推荐一下一个博客 http://www.cocoachina.com/iphonedev/sdk/2010/1126/2397.html
< IOS > 论苹果数据持久化。的更多相关文章
- IOS开发中数据持久化的几种方法--NSUserDefaults
IOS开发中数据持久化的几种方法--NSUserDefaults IOS 开发中,经常会遇到需要把一些数据保存在本地的情况,那么这个时候我们有以下几种可以选择的方案: 一.使用NSUserDefaul ...
- iOS中的数据持久化方式
iOS中的数据持久化方式,基本上有以下四种:属性列表.对象归档.SQLite3和Core Data. 1.属性列表 涉及到的主要类:NSUserDefaults,一般 [NSUserDefaults ...
- IOS学习:ios中的数据持久化初级(文件、xml、json、sqlite、CoreData)
IOS学习:ios中的数据持久化初级(文件.xml.json.sqlite.CoreData) 分类: ios开发学习2013-05-30 10:03 2316人阅读 评论(2) 收藏 举报 iOSX ...
- iOS学习之数据持久化详解
前言 持久存储是一种非易失性存储,在重启设备时也不会丢失数据.Cocoa框架提供了几种数据持久化机制: 1)属性列表: 2)对象归档: 3)iOS的嵌入式关系数据库SQLite3: 4)Core Da ...
- iOS开发中数据持久化
使用几个小例子分别实现 归档NSKeyedArchiver.NSUserDefaults.plist文件数据存储,简单直观.代码地址
- iOS中常用的四种数据持久化技术
iOS中的数据持久化方式,基本上有以下四种:属性列表 对象归档 SQLite3和Core Data 1.属性列表涉及到的主要类:NSUserDefaults,一般 [NSUserDefaults st ...
- iOS中常用的四种数据持久化方法简介
iOS中常用的四种数据持久化方法简介 iOS中的数据持久化方式,基本上有以下四种:属性列表.对象归档.SQLite3和Core Data 1.属性列表涉及到的主要类:NSUserDefaults,一般 ...
- iOS面试题--Model层--数据持久化储存方案
数据持久化储存方案有哪些? iOS中的数据持久化方式,基本上有以下四种:属性列表.对象归档.SQLite3和Core Data 1.属性列表涉及到的主要类:NSUserDefaults,一般 [NSU ...
- IOS开发-本地持久化存储sqlite应用
前言 需求描述 开发测试环境 FMDB介绍 创建工程 一.前言 上一章介绍了如何开发一个IOS应用的入门案例教程: 我的第一个IOS开发应用 本章主要将介 ...
随机推荐
- impala编译
impala编译 编译系统centos 5.10 说明:版本1.3.x----2.1.x都能编译 一.预装库 1.gcc安装 yum install gcc44 yum install gcc44-c ...
- bwlabel函数的c++实现
实验中需要用到区域联通的算法,就是类似于matlab中bwlabel的函数.网上找了找c++源码未果,bwlabel-python版用python描述了matlab中的实现方法,但是最后对标签的处理部 ...
- 《Algorithms 4th Edition》读书笔记——2.4 优先队列(priority queue)-Ⅱ
2.4.2初级实现 我们知道,基础数据结构是实现优先队列的起点.我们可以是使用有序或无序的数组或链表.在队列较小时,大量使用两种主要操作之一时,或是所操作元素的顺序已知时,它们十分有用.因为这些实现相 ...
- JSP通过SmartUpload上传文件实例
httpRequest.setCharacterEncoding("gbk"); String preName = genName.doMake();//设置文件前缀名 Strin ...
- Gradle Tips#1-tasks
原文链接 以这篇博客開始,我将写一系列关于Gradle的文章,用来记录接触Gradle构建脚本以来我所理解的Gradle. 今天要讲的就是Gradle tasks以及task的配置和运行.可能有的读者 ...
- C++模板 静态成员 定义(实例化)
问一个问题: 考虑一个模板: template <typename T> class Test{ public: static std::string info; }; 对于下面若干种定义 ...
- iOS:UI系列之UIScrollview和UIPagecontrol
转眼间,又是一天,就这样忙忙碌碌的一天一天的过着, 不过还好,不是浑浑噩噩的,也算是小有所成,劳有所获吧,嘿嘿! 好了,到了总结的时间啦, 下面就为大家简单讲解下我今天学习的内容吧,希望对各位都有所帮 ...
- document.write 存在几个问题?应该注意
document.write (henceforth DW) does not work in XHTML XHTML 不支持 DW executed after the page has finis ...
- Log4net 列
配置 <configuration> <configSections> <section name="log4net" type="Syst ...
- Sqlserver 系列(一):常用函数
(1)聚合函数 sum,max,min,avg,count (2)日期函数 datediff ,dateadd, datepart,getdate,month,day (3)字符串函数 ltrim,r ...