最近被问到一些关于iOS开发中对于数据存储的处理方式,感觉数据存储这个也是经常用到的一个功能的,有必要自己去整理和记录一下的。
iOS开发中一般是有四种存储数据的方式,分别是:
1.NSUserDefaults:用来保存用户自己设置的一些属性,用户再次打开程序,或者开机后,这些信息还是存在,NSUserDefaults可以存储的类型包括NSString,NSData,NSNumber,NSDictionary,NSArray。如果要存储其他的数据类型,则需要转化为前面的一些类型,NSUSerDefaults才可以去存储。
2.NSKeyedArchiver:采用归档的形式来保存数据,数据对象需要遵守NSCoding协议,并且数据对象对应的类需要实现encodeWithCoder:和initWithCoder:方法,encodeWithCoder:用来告诉系统如何对数据对象进行编码,initWithCoder:用来对数据对象进行解码。例如新闻分类的添加,等再一次进入app的时候添加的分类还是能保存下来的。
3.Sqlite数据库:Sqlite数据库广泛用在移动操作系统开发中,在用这个数据库的时候,需要先添加数据库相关的库和头文件,libsqlite3.dylib,具体数据库的操作可以通过第三库进行操作,例如FMDB这个开源的第三方库。
4.写入到磁盘:通过NSSearchPathForDirectoriesInDomains这个方法获得文件即将保存的路径。
其实iOS开发中数据存储的方式主要是可以分为两种,一种是存储到文件里面,另一种是存储到数据库里面的。存储到文件里面的方式例如NSUserDefaults,plist,NSKeyedArchiver归档等方式,只是plist,NSKeyedArchiver方式是可以选择的保存到沙盒中,而NSUserDefaults是默认保存到沙盒的Library/Preferences目录中的。存储到数据库这个方式,可以通过SQL直接访问数据库,也可以通过ORM(Object Relational Mapping)进行对象关系映射访问数据库。下面主要介绍一下存储到数据库的这种方式。
SQLite是目前主流的嵌入式关系型数据库,其主要特点是轻量级,跨平台,该数据库广泛用到许多嵌入式操作系统中,SQLite数据库是基于C语言开发的轻量级数据库,在iOS中需要使用C语言进行数据库的操作,无法使用Objective-C,因为导入的libsqlite3是用C语言编写的,使用SQLite数据库比较简单,如果是在Mac OSX中使用,可以去SQLite官方网站下载命令行工具,也可以用类似SQLiteManager等工具进行数据库的使用,在iOS开发中使用SQLite数据库主要有如下的一些步骤:
1)首先导入libsqlite3框架;
2)