加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

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

发布时间:2020-12-12 20:12:48 所属栏目:百科 来源:网络整理
导读:NSString 属性列表 把数据存储到沙盒中再从沙盒中取出,明确沙盒目录有两种方式 一种 // 获取应用沙盒的根路径 NSString *home = NSHomeDirectory (); NSString *documents = [home stringByAppendingPathComponent : @"Documents" ]; 二种 NSString *docume

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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读