ios关于数据的存储

本文转载至http://blog.csdn.net/chen505358119/article/details/9278539

这里我总结了一下数据的存储方式,一是保存在沙盒里创建文件,再把数据写到文件中,二是保存到plist中,三是保存到数据库中.

1.保存到文件中需要借助NSKeyedArchiver和NSKeyedUnArchiver

保存数据:                 NSArray*paths=NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,               NSUserDomainMask,YES);

NSString *path = [pathsobjectAtIndex:0];

NSMutableData *data =[[NSMutableData alloc] init];

NSKeyedArchiver*archiver = [[NSKeyedArchiver alloc]

initForWritingWithMutableData:data];

[archiver encodeObject:_filleText.text forKey:@"ty"];

[archiver finishEncoding];

[data writeToFile:[path stringByAppendingPathComponent:@"test"]

atomically:YES];

[archiver release];

[data release];

获取数据:

NSArray *paths =NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,NSUserDomainMask,YES);

NSString *path = [pathsobjectAtIndex:0];

NSMutableData *data =[[NSMutableData alloc] initWithContentsOfFile:

[path stringByAppendingPathComponent:@"test"]];

NSKeyedUnarchiver *unarchiver =[[NSKeyedUnarchiver alloc]

initForReadingWithData:data];

NSObject*ret = [[unarchiverdecodeObjectForKey:@"ty"] retain];

[unarchiver finishDecoding];

[unarchiver release];

[data release];

也可以写成这样只不过前一种进行了序列化:

保存:

NSArray *paths =NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,NSUserDomainMask,YES);

NSString *path = [pathsobjectAtIndex:0];

[NSKeyedArchiver archiveRootObject:_filleText.text toFile:[pathstringByAppendingPathComponent:@"test"]];

获取:

NSArray *paths =NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,NSUserDomainMask,YES);

NSString *path = [pathsobjectAtIndex:0];

NSString* str=[NSKeyedUnarchiver unarchiveObjectWithFile:[pathstringByAppendingPathComponent:@"test"]];

2.保存到plist文件中

分为两种一种是保存在系统自带的plist中,另一种是保存在自已创建的plist文件中

保存到系统自带的plist

保存:

[[NSUserDefaults standardUserDefaults] setObject:_filleText.textforKey:@"save"];

[[NSUserDefaults standardUserDefaults]synchronize];

获取数据:

NSString*str=[[NSUserDefaults standardUserDefaults] objectForKey:@"save"];

保存到自已创的plist中

保存:

NSMutableDictionary* dict=[NSMutableDictionarydictionaryWithObjectsAndKeys:@"chen",@"sex",@"liang",@"name",nil];

NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,NSUserDomainMask, YES);

NSString *docPath = [pathsobjectAtIndex:0];

NSString *myFile = [docPath stringByAppendingPathComponent:@"user.plist"];

[dict writeToFile:myFile atomically:YES];

获取数据:

NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,NSUserDomainMask, YES);

NSString *docPath = [paths objectAtIndex:0];

NSString *myFile = [docPath stringByAppendingPathComponent:@"user.plist"];

NSDictionary* dic = [NSDictionary dictionaryWithContentsOfFile:myFile];

不过我写着写着,觉得第一种和第二种都差不多,基本上都可以归类为保存数据库到文件中,不同的就是保存到plist中可以打开看到里面的数据,第一种看不到,所以更安全些。

3.保存数据到数据库里,一般分为两种一种是ios自带的数据库coredata,另一种是sqllite,我想说的是因为sqllite好多和c关联,如果对c不是很熟悉的话,建议用FMDataBase这个第三方库,它是对sqllite的封装,很好用,对于数据库这块下次再写

有什么问题请大家多指教

时间: 2024-12-22 08:28:32

ios关于数据的存储的相关文章

iOS中数据持久存储方式及区别

1 NSUserdefaults 主要用来存储一些短小的信息,例如应用程序设置和属性及用户数据. 2 属性列表 以列表的形式把数据存储到磁盘上.属性列表类包括NSArray, NSDictionary, NSString, NSNumber, NSDate, NSdata. 这些类型的数据可用直接调用writeToFile和相应的加载函数来存储到磁盘和从磁盘读出. 相应的加载函数有: arrayWithContentsOfFile: dictionaryWithContentsOfFile: s

iOS数据持久化存储

本文中的代码托管在github上:https://github.com/WindyShade/DataSaveMethods 相对复杂的App仅靠内存的数据肯定无法满足,数据写磁盘作持久化存储是几乎每个客户端软件都需要做的.简单如"是否第一次打开"的BOOL值,大到游戏的进度和状态等数据,都需要进行本地持久化存储.这些数据的存储本质上就是写磁盘存文件,原始一点可以用iOS本身支持有NSFileManager这样的API,或者干脆C语言fwrite/fread,Cocoa Touch本身

IOS开发--数据持久化篇之文件存储(一)

前言:个人觉得开发人员最大的悲哀莫过于懂得使用却不明白其中的原理.在代码之前我觉得还是有必要简单阐述下相关的一些知识点. 因为文章或深或浅总有适合的人群.若有朋友发现了其中不正确的观点还望多多指出,不胜感激. 什么叫数据持久化: 在这里我就不照搬教科书上抽象的概念了.我觉得既然要把东西写出来就让它简单明了. 要搞清楚数据持久化,首先要知道数据持久化是相对于缓存而言的,缓存是在程序运行的过程中保存在内存中,程序一旦运行结束,其内存就会被释放.缓存在内存中的数据也就随之消失. 那么数据持久化就是要解

IOS应用数据存储

IOS应用数据存储 常用方式 - XML属性列表(plist)归档 - Preference(偏好设置) - NSKeyedArchiver归档(NSCoding) - SQLite3 - Core Data 应用程序沙盒 每个应用程序都有自己的应用沙盒(应用沙盒就是文件系统目录)与其它文件系统隔离.应用必须呆在 自己的沙盒里,其它应用不能访问该沙盒 应用沙盒目录<假设应用名字Layer>  应用沙盒结构分析 应用沙盒的常见获取方式 沙盒根目录:NSString *home = NSHomeD

ios开发 数据存储

原地址:http://blog.csdn.net/sxhong/article/details/8223881 首选项设置存储 NSUserDefaults 以及通过它控制的SettingBundle  NSUserDefaults 用来保存一些设置,他会自动写到何时的位置.NSUbiquitousKeyValueStore 多平台同步设置,限制是大小64k,开启entitlement,唯一Apple ID(还要考虑无法连接到iCloud网络时的情形) 文件存储一.目录描述<Applicatio

ios应用数据存储方式(Sqlite)

一. 简介 Sqlite:主要用于大数据的存储 Sqlite的使用步骤: 1.导入头文件 2.一般把数据库文件放入沙盒,所以需要先设定存放路径 3.打开数据库--用sqlite3_open方法 4.创建数据列表 5.然后就可以对Sqlite 数据库进行  增-删-改-查.不能忘记对执行数据库语句 二.简单介绍常用方法 sqlite3          *db, 数据库句柄,跟文件句柄FILE很类似sqlite3_stmt      *stmt, 这个相当于ODBC的Command对象,用于保存编

OS开发UI篇—ios应用数据存储方式(归档)

OS开发UI篇—ios应用数据存储方式(归档)  一.简单说明 在使用plist进行数据存储和读取,只适用于系统自带的一些常用类型才能用,且必须先获取路径相对麻烦: 偏好设置(将所有的东西都保存在同一个文件夹下面,且主要用于存储应用的设置信息) 归档:因为前两者都有一个致命的缺陷,只能存储常用的类型.归档可以实现把自定义的对象存放在文件中. 二.代码示例 1.文件结构 2.代码示例 YYViewController.m文件 1 // 2 // YYViewController.m 3 // 02

IOS数据本地存储的四种方式--

注:借鉴于:http://blog.csdn.net/jianjianyuer/article/details/8556024 在IOS开发过程中,不管是做什么应用,都会碰到数据保存问题.将数据保存到本地,能够让程序更加流畅,不会出现让人厌恶的菊花状,使得用户的体验更好.下面是介绍数据保存的方式 第一.NSKeyedArchiver:采用归档的形式来保存数据.(归档——解档)———大量数据和频繁读写不合适使用 1.归档器的作用是将任意的对象集合转换为字节流.这听起来像是NSPropertyLis

iOS应用数据存储的常用方式

ios程序中数据数据存储有下列5种方式 XML属性列表(plist)归档 Preference(偏好设置) NSKeyedArchiver归档(NSCoding) SQLite3 Core Data 每个iOS应用都有自己的应用沙盒(应用沙盒就是文件系统目录),与其他文件系统隔离.应用必须待在自己的沙盒里,其他应用不能访问该沙盒 应用沙盒的文件系统目录,如下图所示(假设应用的名称叫Layer) 模拟器应用沙盒的根路径在: (apple是用户名, 7.0是模拟器版本) /Users/apple/L