您的位置:首页 > 数据库

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

2013-08-31 02:01 411 查看
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();

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

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

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

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];

NSString *path = [documents
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, NULL, &error);

3插入数据

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

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

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

4查询数据

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

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

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

5关闭数据库

// 关闭数据库

sqlite3_close(_db);

Core Data

是苹果公司自带的存储

资源这比较详细可观看 http://www.cnblogs.com/mjios/archive/2013/02/26/2932999.html
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐