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

前端之家收集整理的这篇文章主要介绍了数据存储小结,属性列表,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做一些插入数据的准备

NULL);


5关闭数据库

// 关闭数据库

sqlite3_close(_db);



Core Data

是苹果公司自带的存储

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

猜你在找的Sqlite相关文章