iOS开发中存储数据的方法

  最近被问到一些关于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)sqlite3_open()会打开一个数据库指定一个数据库文件保存路径,如果文件存在则直接打开,如果文件不存在则创建文件再打开,打开数据库会创建一个sqlite3的对象,后面对于数据库的操作会用到这个对象;

  3)对于无返回值的语句(例如添加,删除,修改)可以通过sqlite_exec()进行操作;

  4)对于有反悔值的语句(例如查询)可以sqlite_prepare()进行操作;

原文地址:https://www.cnblogs.com/qirutr/p/4651157.html