iOS 数据存储(六) -持久化 Realm

2022-07-29  本文已影响0人  搬砖的crystal

一、简介

Realm 并不是基于 Core Data ,也不是基于 SQLite 所构建的。它拥有自己的数据库存储引擎,可以高效且快速地完成数据库的构建操作。Realm可以轻松地移植到项目当中,并且绝大部分常用的功能(比如说插入、查询等等)都可以用一行简单的代码轻松完成!目前支持 Objective-C、Swift 和 Java 三种语言,也就是说能在 iOS、Android 和 Mac 上面跨平台使用。
Realm 使用方面:相比于 SQLite,Core Data 使用起来更加简单,更易入门。
Realm 比使用 SQLite 要快,比 ORM 要快很多。 简单。通过标注和对象操作实现数据操作。 版本升级时,数据迁移成本很低。 与 rxjava、retrofit 等 Library 有很好的交互。

Realm 是为移动端开发定制的全功能数据库,可以将原生对象直接映射到 Realm 的数据库引擎(远不仅是一个键值对的存储)。

RLMRealmRLMRealm 是框架的核心所在,是我们构建数据库的访问点,就如同 Core Data 的管理对象上下文( managed object context )一样。出于简单起见, realm 提供了一个名为 defaultRealm 的单例,在本教程中我们就仅使用这个单例来完成我们所需的功能。当然,我们也可以导入外部已经编写好的 realm 数据库文件,也可以在我们不需要将数据保存在硬盘上时使用 “ 内存实例对象 ” ( in-memory realm instance ),此外,还可以同时使用多个数据库文件。

RLMObject :这是我们自定义的 realm 数据模型。创建数据模型的行为将会影响到数据库的结构。要创建一个数据模型,我们只需要继承 RLMObject ,然后设计我们想要存储的属性即可。

关系 (Relationships) :通过简单地在数据模型中声明一个 RLMObject 类型的属性,我们就可以创建一个 “ 一对多 ” 的对象关系。同样地,借助 RLMArray我们还可以创建 “ 多对一 ” 和 “ 多对多 ” 的关系。

写操作事务 (Write Transactions) :数据库中的所有操作,比如创建、编辑,或者删除对象,都必须在事务中完成。 “ 事务 ” 是指位于 beginWriteTransaction() 以及 commitWriteTransaction() 操作之间的代码段。

查询 (Queries) :要在数据库中检索信息,我们需要用到 “ 检索 ” 操作。检索最简单的形式是对 RLMObject 对象发送 allObjects() 消息。如果需要检索更复杂的数据,那么还可以使用断言( predicates )、复合查询以及结果排序等等操作。

RLMResults :这个类是执行任何查询请求后所返回的类,其中包含了一系列的 RLMObjects 对象。和 NSArray 类似,我们可以用下标语法来对其进行访问,并且还可以决定它们之间的关系。不仅如此,它还拥有许多更强大的功能,包括排序、查找等等操作。

二、使用

1.引入
(1)导入方式一:CocoaPods

在 Podfile 中,添加 pod 'Realm'

(2)手动导入

下载 Realm 的最新发布版本,并解压;
将 Realm.framework 从 ios/static/ 文件夹拖曳到项目中;
在 Xcode 文件导航器中选择您的项目,然后选择您的应用目标,进入到 ** Build Phases** 选项卡中。在 Link Binary with Libraries 中单击 + 号然后添加 libc++.tbd 以及 libz.tbd。

存取的对象都要继承自RLMObject,创建时可以如下选择:

2.使用
上一篇下一篇

猜你喜欢

热点阅读