IOS数据存储
来源:互联网 发布:淘宝数据采集器破解版 编辑:程序博客网 时间:2024/06/08 19:33
1、plist文件:需要知道文件名称,适合存储数组、字符串等基础数据
2、偏好设置:不需要知道文件名称,小型数据,使用NSUserDefault调用,
OC使用[[NSUserDefaults standardUserDefaults] synchronize];
swift使用NSUserDefaults.standardUserDefaults().synchronize()
NSUserDefaults支持的数据类型有:NSNumber(NSInteger、float、double),NSString,NSDate,NSArray,NSDictionary,BOOL.
//将NSString 对象存储到 NSUserDefaults 中 NSString *passWord = @"1234567"; NSUserDefaults *user = [NSUserDefaults standardUserDefaults]; [user setObject:passWord forKey:@"userPassWord"]; //从NSUserDefaults取出NSString NSUserDefaults *user = [NSUserDefaults standardUserDefaults]; NSString *passWord = [ user objectForKey:@"userPassWord"];
NSUserDefaults 存储的对象全是不可变的(这一点非常关键,弄错的话程序会出bug),例如,如果我想要存储一个 NSMutableArray 对象,我必须先创建一个不可变数组(NSArray)再将它存入NSUserDefaults中去,代码如下:
NSMutableArray *mutableArray = [NSMutableArray arrayWithObjects:@"123",@"234", nil]; NSArray * array = [NSArray arrayWithArray:mutableArray]; NSUserDefaults *user = [NSUserDefaults standardUserDefaults]; [user setObject:array forKey:@"记住存放的一定是不可变的"];
/*-------------------------错误的赋值方法-------------------*/ NSUserDefaults *user = [NSUserDefaults standardUserDefaults]; //这样写后,mutableArray 就变成了不可变数组了,如果你要在数组中添加或删除数据就会出现bug NSMutableArray *mutableArray = [user objectForKey:@"记住存放的一定是不可变的"];/*-------------------------正确的赋值方法-------------------*/ NSUserDefaults *user = [NSUserDefaults standardUserDefaults]; //可以用alloc 方法代替 NSMutableArray *mutableArray = [NSMutableArray arrayWithArray:[user objectForKey:@"记住存放的一定是不可变的"]];
3、core Data 大型数据
4、SQLite数据库
sqlite3_prepare_v2(sqlite3Database, query, -1, &compiledStatement, NULL);int sqlite3_prepare_v2( sqlite3 *db, /* Database handle */数据指针 const char *zSql, /* SQL statement, UTF-8 encoded */sql语句,使用UTF-8编码 int nByte, /* Maximum length of zSql in bytes. */如果nByte小于0,则函数取出zSql中从开始到第一个0终止符的内容;如果nByte不是负的,那么它就是这个函数能从zSql中读取的字节数的最大值。如果nBytes非负,zSql在第一次遇见’/000/或’u000’的时候终止 sqlite3_stmt **ppStmt, /* OUT: Statement handle */能够使用sqlite3_step()执行的编译好的准备语句的指针,如果错误发生,它被置为NULL,如假如输入的文本不包括sql语句。调用过程必须负责在编译好的sql语句完成使用后使用sqlite3_finalize()删除它。 const char **pzTail /* OUT: Pointer to unused portion of zSql */上面提到zSql在遇见终止符或者是达到设定的nByte之后结束,假如zSql还有剩余的内容,那么这些剩余的内容被存放到pZTail中,不包括终止符);
NSCoding首先是一个协议,类继承它,此类的实例才能被编码(encode)和译码(decode),继承了这个类,也就实现两个方法
1.initWithCoder(NSCoder:coder)//从coder中读取数据,保存到相应的变量中,即反序列化数据
2.encodeWithCoder(NSCoder:coder)//读取实例变量,并把这些数据写到coder中去。序列化数据
注意:还有一个抽象类(NSCoder)与其区别,NSCoder不能被实例化,但是可以被继承,有两个方便的实例子类。可以直接只用器归档和解档
1.NSKeyedUnarchiver 从二进制流读取对象。
2.NSKeyedArchiver 把对象写到二进制流中去
- IOS 数据存储
- IOS 数据存储
- ios开发 数据存储
- IOS 数据存储
- ios数据存储
- IOS 数据存储
- IOS 数据存储
- IOS 数据存储
- ios数据存储小结
- iOS 数据存储
- ios开发 数据存储
- ios数据存储
- iOS 数据存储指导方针
- ios的数据存储
- iOS数据存储
- iOS归档存储数据
- IOS 数据存储
- iOS 数据存储
- css3_jq仿新浪home仿app
- 1003. 我要通过!(20)
- 关于upload上传类
- C# Unity 对于泛型接口的支持
- CentOS 下配置yum安装Nginx
- IOS数据存储
- Android图片加水印
- Untiy-文本转Texture
- 05.ThreeJs开发指南-第五章-几何体
- 【GCC调试程序C语言问题】对‘ceil’未定义的引用/已经包含头文件仍然提示未定义的引用
- 征程,出发,成长,实现
- desSlideshow.js——tab图片幻灯片(竖)
- Android LRecyclerView实现Item侧滑菜单、长按拖拽Item、滑动删除Item等功能
- 2D 道具提示 HUD