数据存储小结,属性列表,archiver 偏好设置,Sqlite3,Core Data
来源:互联网 发布:华为手机照片导入mac 编辑:程序博客网 时间:2024/05/16 12:07
NSString
属性列表
把数据存储到沙盒中再从沙盒中取出,明确沙盒目录有两种方式
一种
//获取应用沙盒的根路径
NSString *home = NSHomeDirectory();
NSString *documents = [homestringByAppendingPathComponent:@"Documents"];
二种
NSString *documents = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,NSUserDomainMask, YES)lastObject];
读取或写入沙盒documents中
#pragma mark 将字典写入属性列表文件中
- (void)writeDict {
NSMutableDictionary *dict = [NSMutableDictionarydictionary];
[dictsetObject:@"mj"forKey:@"name"];
[dict setObject:[NSNumbernumberWithInt:10]forKey:@"age"];
//获取应用沙盒的根路径
NSString *home = NSHomeDirectory();
NSLog(@"%@",home);
NSString *documents = [homestringByAppendingPathComponent:@"Documents"];
// 属性列表的默认拓展名是plist
NSString *path = [documentsstringByAppendingPathComponent:@"dict.plist"];
[dict writeToFile:pathatomically:YES];
}
#pragma mark 从属性列表文件中读取字典
- (void)readDict {
//获取应用沙盒的根路径
NSString *home = NSHomeDirectory();
NSString *documents = [homestringByAppendingPathComponent:@"Documents"];
// 属性列表的默认拓展名是plist
NSString *path = [documentsstringByAppendingPathComponent:@"dict.plist"];
NSDictionary *dict = [NSDictionarydictionaryWithContentsOfFile:path];
NSLog(@"%@", dict);
}
自定义对象进行归档是编码与解码需要实现NSCoding encodewithCoder initWithCoder
#pragma mark 读取多个Person
- (void)readPersons {
NSString *documents = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,NSUserDomainMask,YES)lastObject];
NSString *path = [documentsstringByAppendingPathComponent:@"persons.plist"];
NSArray *array = [NSKeyedUnarchiverunarchiveObjectWithFile:path];
NSLog(@"%@", array);
}
#pragma mark 写入多个Person
- (void)writePersons {
NSMutableArray *array = [NSMutableArrayarray];
for (int i =0; i<3 ; i++) {
NSString *name = [NSStringstringWithFormat:@"mj-%i", i];
int age = 10 + i;
Person *p = [PersonpersonWithName:name age:age];
[array addObject:p];
}
NSString *documents = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,NSUserDomainMask, YES) lastObject];
NSString *path = [documentsstringByAppendingPathComponent:@"persons.plist"];
}
偏好设置 Preferences
一般用于写入系统中的文档数据,比如用户注册,修改皮肤颜色,修改字体。。
#pragma mark 读取偏好设置
- (void)read {
NSUserDefaults *defaults = [NSUserDefaultsstandardUserDefaults];
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 = [NSUserDefaultsstandardUserDefaults];
[defaultssetObject:@"mj"forKey:@"username"];
[defaultssetObject:@"123"forKey:@"password"];
[defaultssetBool:YESforKey:@"auto_login"];
// 将数据同步到Preferences文件夹中
[defaultssynchronize];
}
Sqlite3
是开源的小型数据库,嵌入式关系型数据库,可移植性好,已使用内存开销小,无类型,数据类型,Text Integer,Float ,boolean ,blob
1打开数据库
// 数据库文件路径
NSString *filename = [@"sqlite.db"documentsAppend];
//如果数据库不存在,就会创建一个
int result = sqlite3_open([filenameUTF8String], &_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);
// sqlite3_prepare_v2做一些插入数据的准备
//主要是检查SQL语句的语法问题
int result = sqlite3_prepare_v2(_db, sql, -1, &stmt,NULL);
// 关闭数据库
sqlite3_close(_db);
Core Data
是苹果公司自带的存储
资源这比较详细可观看 http://www.cnblogs.com/mjios/archive/2013/02/26/2932999.html
- 数据存储小结,属性列表,archiver 偏好设置,Sqlite3,Core Data
- 最全iOS数据存储方法介绍:FMDB,SQLite3 ,Core Data,Plist,Preference偏好设置
- 最全iOS数据存储方法介绍:FMDB,SQLite3 ,Core Data,Plist,Preference偏好设置,NSKeyedArchiver归档
- 最全iOS数据存储方法介绍:FMDB,SQLite3 ,Core Data,Plist,Preference偏好设置,NSKeyedArchiver归档
- iphone开发中数据存储 属性列表,归档,SQLite3,core data 还有FMDB应该选择哪种?
- 对象归档、SQLite3、Core Data和 属性列表(数据持久化)
- 数据持久化方式:属性列表、对象归档、SQLite3和Core Data
- iOS中的数据持久化方式,基本上有以下四种:属性列表、对象归档、SQLite3和Core Data
- IOS_数据存取_沙盒+plist+archiver+偏好设置
- iOS 数据存储-偏好设置
- 数据存储之偏好设置
- Core Data属性设置
- IOS数据持久化之一属性列表(或偏好设置)
- 28.数据存储 plist 偏好设置 归档
- ios数据存储之偏好设置
- ios应用数据存储方式(偏好设置)
- Android中数据存储----偏好设置
- ios应用数据存储方式(偏好设置)
- TC(SRM)和CF入门教程for ACMer
- C++ 以类为单位的程序结构
- WebView基本操作与js之间调用
- paip. mysql如何临时 暂时 禁用 关闭 触发器
- 关于Hibernate在反向工程时无法选择Spring DAO Type的解决方法【更新版】
- 数据存储小结,属性列表,archiver 偏好设置,Sqlite3,Core Data
- extjs4 treepanel、 树、节点的操作
- 配置运行环境
- CF198 Div 1 题解
- //一个半月
- javax.xml.soap.SOAPException: Unable to receive message 原因
- Citrix服务器虚拟化之三十 XenApp 6.5发布流式应用程序
- 任意四边形的面积公式
- JSP四大作用域