博客> OC中有哪些数据存储方式, 各有什么区别?
OC中有哪些数据存储方式, 各有什么区别?
2019-03-21 20:20 评论:0 阅读:849 孤雁南飞
ios

Write写入方式:永久保存在磁盘中

//将NSData类型对象data写入文件,文件名为FileName [data writeToFile:FileName atomically:YES];

1.NSUserDefaults:偏好设置,本质是plist 用来保存应用程序设置和属性、用户保存的数据。用户再次打开程序或开机后这些数据仍然存在。NSUserDefaults可以存储的数据类型包括:NSData、NSString、NSNumber、NSDate、NSArray、NSDictionary。如果要存储其他类型,则需要转换为前面的类型,才能用NSUserDefaults存储。

2.NSKeyedArchiver 采用归档的形式来保存数据,该数据对象需要遵守NSCoding协议,并且该对象对应的类必须提供encodeWithCoder:和initWithCoder:方法。前一个方法告诉系统怎么对对象进行编码,而后一个方法则是告诉系统怎么对对象进行解码。​

缺点: 归档的形式来保存数据,只能一次性归档保存以及一次性解压。所以只能针对小量数据,而且对数据操作比较笨拙,即如果想改动数据的某一小部分,还是需要解压整个数据或者归档整个数据。​

例如对Possession对象归档保存。

定义Possession:

.h

@interface Possession:NSObject{//遵守NSCoding协议 NSString *name;//待归档类型 @end

.m

@implementation Possession

//归档 -(void)encodeWithCoder:(NSCoder )aCoder [aCoder encodeObject:name forKey:@"name"]; //解归档 -(void)initWithCoder:(NSCoder )aDecoder name=[[aDeCoder decodeObjectforKey:@"name"] retain];

3.SQLite:采用数据库来存储数据 SQLite 是一个轻量级的关系数据库。iOS SDK很早就支持了SQLite,在使用时,只需要加入 libsqlite3.dylib 依赖以及引入 sqlite3.h 头文件即可。但是,原生的SQLite API在使用上相当不友好,在使用时,非常不便。于是,开源社区中就出现了一系列将SQLite API进行封装的库,而FMDB (https://github.com/ccgus/fmdb) 则是开源社区中的优秀者。 这里我只记录我常用的sqlite封装库: FMDB​

4.什么是FMDB FMDB是iOS平台的SQLite数据库框架 FMDB以OC的方式封装了SQLite的C语言API FMDB的优点 使用起来更加面向对象,省去了很多麻烦、冗余的C语言代码对比苹果自带的Core Data框架,更加轻量级和灵活提供了多线程安全的数据库操作方法,有效地防止数据混乱

5.CoreData Core Data本质上是使用SQLite保存数据,但是它不需要编写任何SQL语句。 要使用Core Data,需要在Xcode中的数据模型编辑器中设计好各个实体以及定义好他们的属性和关系。之后,通过操作这些对象,结合Core Data完成数据的持久化

收藏
0
sina weixin mail 回到顶部