数据存储小结,属性列表,archiver 偏好设置,Sqlite3,Core Data

Nsstring

属性列表

把数据存储到沙盒中再从沙盒中取出,明确沙盒目录有两种方式

一种

// 获取应用沙盒的根路径

Nsstring *home = NSHomeDirectory();

Nsstring *documents = [home stringByAppendingPathComponent:@"Documents"];

二种

Nsstring *documents = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,NSUserDomainMask,YES) lastObject];

读取或写入沙盒documents中

#pragma mark 将字典写入属性列表文件

- (void)writeDict {

NSMutableDictionary *dict = [NSMutableDictionary dictionary];

[dict setobject:@"mj" forKey:@"name"];

[dict setobject:[NSNumber numberWithInt:10] forKey:@"age"];

// 获取应用沙盒的根路径

Nsstring *home = NSHomeDirectory();

NSLog(@"%@",home);

Nsstring *documents = [home stringByAppendingPathComponent:@"Documents"];

// 属性列表的认拓展名是plist

Nsstring *path = [documents stringByAppendingPathComponent:@"dict.plist"];

[dict writetoFile:path atomically:YES];

}


#pragma mark 属性列表文件中读取字典

- (void)readDict {

// 获取应用沙盒的根路径

Nsstring *home = NSHomeDirectory();

NSDictionary *dict = [NSDictionary dictionaryWithContentsOfFile:path];

NSLog(@"%@",dict);

}





用于归档Archiver 操作多个文件数据存入一个文件中,扩展名可以为任意名称

自定义对象进行归档是编码与解码需要实现NSCoding encodewithCoder initWithCoder

#pragma mark 读取多个Person

- (void)readPersons {

Nsstring *documents = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,NSUserDomainMask,YES) lastObject];

Nsstring *path = [documents stringByAppendingPathComponent:@"persons.plist" ];

NSArray *array = [NSKeyedUnarchiver unarchiveObjectWithFile:path];

NSLog(@"%@",array);


}


#pragma mark 写入多个Person

- (void)writePersons {

NSMutableArray *array = [NSMutableArray array];

for (int i =0; i<3 ; i++) {

Nsstring *name = [Nsstring stringWithFormat:@"mj-%i",i];

int age = 10 + i;

Person *p = [Person personWithName:name age:age];

[array addobject:p];

}

Nsstring *documents = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,NSUserDomainMask, YES) lastObject];

stringByAppendingPathComponent:@"persons.plist" ];

[ NSKeyedArchiver archiveRootObject:array toFile:path];

}


偏好设置 Preferences

一般用于写入系统中的文档数据,比如用户注册修改皮肤颜色,修改字体。。

#pragma mark 读取偏好设置

- (void)read {

NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];

Nsstring *useranme = [defaults objectForKey:@"username"];

Nsstring *password = [defaults objectForKey:@"password"];

BOOL autoLogin = [defaults boolForKey:@"auto_login"];

NSLog(@"%@-%@-%i",useranme,password,autoLogin);

}


#pragma mark 存储偏好设置

- (void)save {

// NSUserDefaults关联着沙盒中的Preferences文件

NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];

[defaults setobject:@"mj" forKey:@"username"];

[defaults setobject:@"123" forKey:@"password"];

[defaults setBool:YES forKey:@"auto_login"];

// 将数据同步到Preferences文件夹中

[defaults synchronize];

}



sqlite3

是开源的小型数据库,嵌入式关系型数据库,可移植性好,已使用内存开销小,无类型,数据类型,Text Integer,Float,boolean,blob


1打开数据库

// 数据库文件路径

Nsstring *filename = [@"sqlite.db" documentsAppend];

// 如果数据库不存在,就会创建一个

int result = sqlite3_open([filename UTF8String],&_db);

if (result == sqlITE_OK) {



2,创建表,

返回结果 数据库 语句 错误

int result = sqlite3_exec(_db,sql,NULL,&error);


3插入数据

// sqlite3_prepare_v2做一些插入数据的准备

// 主要是检查sql语句的语法问题

int result = sqlite3_prepare_v2(_db,-1,&stmt,NULL);


4查询数据

// sqlite3_prepare_v2做一些插入数据的准备

ottom:0px; font-size:18px; font-family:'Heiti SC Light'; color:rgb(42,NULL);


5关闭数据库

// 关闭数据库

sqlite3_close(_db);



Core Data

是苹果公司自带的存储

资源这比较详细可观看 http://www.cnblogs.com/mjios/archive/2013/02/26/2932999.html

相关文章

SQLite架构简单,又有Json计算能力,有时会承担Json文件/RES...
使用Python操作内置数据库SQLite以及MySQL数据库。
破解微信数据库密码,用python导出微信聊天记录
(Unity)SQLite 是一个软件库,实现了自给自足的、无服务器...
安卓开发,利用SQLite实现登陆注册功能