上面已经说完了SQLite和FMDB以及两者的区别,本篇将讲述iOS中另一个存储方式,CoreData的使用。通读下来大约20-25分钟,后续还会根据项目中问题,不断更新。
一、预备知识
在了解CoreData,大家有必要了解对象关系映射(英语称object Relational Mapping,简称ORM)。
1.ORM
ORM是通过使用描述对象和数据库之间映射的元数据,可以实现将对象自动持久化到关系数据库当中。ORM的存在为了解决面向对象与数据库科恩干存在不匹配的一种技术。
二、初识CoreData
1.CoreData是一种在iOS 3系统中,也是苹果自己推出的数据存储框架,采用了一种ORM(对象关系映射)的存储关系。CoreData一个比较大的优势在于在使用CoreData过程中不需要我们编写SQL语句,也就是将OC对象存储于数据库,也可以将数据库数据转为OC对象(数据库数据与OC对象相互转换)。
2.CoreData几个类
(1)NSManagedObjectContext
意思是托管对象上下文,数据库的大多数操作是在这个类操作
(2)NSManagedObjectModel
意思是托管对象模型,其中一个托管对象模型关联到一个模型文件,里面存储着数据库的数据结构。
(3)NSPersistentStoreCoordinator
意思是持久化存储协调器,主要负责协调上下文玉存储的区域的关系。
(4)NSManagedObject
意思是托管对象类,其中CoreData里面的托管对象都会继承此类。
三、CoreData基本使用
下面开始讲解CoreData的基本使用,里面会插入图片和代码,可能内容比较多,希望大家静下来看完(比较考验大家的耐心程度)。
使用CoreData方式,有两种可能。第一种是项目开始就创建带有CoreData数据库,还有一种项目已经开始了,重新接入CoreData,下面我们第三部分主要讲述这两种方式的过程。
1.项目开始就使用CoreData
我们在创建项目的时候,勾选Use Core Data
如果利用项目刚建时,勾选Use Core Data,这样在目录中就会出现,后缀名为.xcdatamodeld。
打开AppDelegate发现类中多了以下内容
AppDelegate.h
AppDelegate.m中
我们可以点开testCoreData.xcdatamodeld文件,我们可以看到实体和关系。如下图
通过点击左色红色添加红色,右边红色添加属性,在这中间我们还需要留意一些细节。
(1)
创建后可以清楚的看到模型文件左侧的列表,有三个Entities、Fetch Requests以及Configurations三个选项,意思分别是:实体,请求模版以及配置信息。
(2)
添加完一个实体后,你会发现一个实体是对应着三个内容,分别是Attributes、Relationships和Fetched Properties,意思分别是:属性、关联关系以及获取操作。
(3)实体属性类型
我们来分别简单解释类型的意义,从上往下
Undefined:也就是默认值,如果参与编译会报错
Integer 16:代表整数,范围是-32768 ~ 32767
Integer 32:代表整数,范围是-2147483648 ~ 2147483647
Integer 64:代表整数,范围是–9223372036854775808 ~ 9223372036854775807,还是很大的,较少用
Double:代表小数
Float:代表小数
String:代表字符串,NSString表示
Boolean:代表布尔值,使用NSNumber表示
Date:代表日期时期
Binary Data:代表二进制,是用NSData表示
Transformable:代表Objective对象,要遵守NSCoding协议
(4)关联关系