Realm for Swift:完整指南与示例

面向初学者的在线Python训练器

轻松学习Python,无需理论负担。在浏览器中直接解决带自动检查的实践任务,无需安装任何东西。

开始课程

什么是 Realm,为什么需要它?



Realm 是一个移动数据库,作为 Core Data 和 SQLite 的替代方案而创建。与传统的关联数据库不同,Realm 作为面向对象的存储运行:您使用原生的 Swift 对象,而不是 SQL 查询或 NSManagedObject。Realm 以自有格式存储数据,从而提供接近内存运行的速度。



Realm 的主要优势:

  • 速度:在移动设备上,Realm 比 SQLite 快 10-100 倍。
  • 简单性:您使用普通的 Swift 对象,通过继承 Realm.Object 来实现。
  • 自动更新:查询结果 (Results) 在数据更改时自动更新。
  • 实时对象:Realm 对象自动与数据库同步。
  • 跨平台:Realm 可在 iOS、macOS、tvOS 和 watchOS 上运行。


Realm 非常适合需要在设备上快速访问数据的应用程序:待办事项列表、即时通讯工具、网络数据缓存、笔记应用等。



在 Swift 中安装 Realm



Swift 的 Realm 可通过 Swift Package Manager (SPM)、CocoaPods 或 Carthage 安装。我们来看两种最流行的方法。



通过 Swift Package Manager 安装(推荐)

  1. 在 Xcode 中打开项目:File → Add Packages...
  2. 粘贴 URL:https://github.com/realm/realm-swift.git
  3. 选择版本(推荐最新的稳定版)并点击 Add Package。
  4. 在出现的窗口中,为您的目标构建选择 Realm 和 RealmSwift 包。


通过 CocoaPods 安装

在 Podfile 中添加:

target 'YourApp' do  use_frameworks!  pod 'RealmSwift'end

然后在终端中执行:

pod install


在代码中导入

import RealmSwift


快速入门:第一个模型与数据写入



让我们创建一个简单的任务模型并将其保存到数据库。



import RealmSwift

// 1. 定义模型class Task: Object { @Persisted var id: String = UUID().uuidString @Persisted var title: String = "" @Persisted var isCompleted: Bool = false @Persisted var createdAt: Date = Date() // 主键(可选,但推荐) override static func primaryKey() -> String? { return "id" }}

// 2. 保存对象let task = Task()task.title = "购买食品"task.isCompleted = false

let realm = try! Realm()try! realm.write { realm.add(task)}

// 3. 读取所有任务let tasks = realm.objects(Task.self)for task in tasks { print("\\(task.title) - \\(task.isCompleted ? "已完成" : "未完成")")}


Realm 的主要方法与函数



以下是使用 Realm 的关键方法。每个方法都附有描述、参数和工作示例。



1. Realm() — 初始化数据库

功能:创建或打开现有的 Realm 数据库。默认情况下,数据库文件位于应用程序的 Documents 目录中。

参数:configuration: Realm.Configuration? — 可选配置(文件 URL、模式、迁移版本)。

// 标准初始化let realm = try! Realm()

// 使用自定义 URL 初始化let config = Realm.Configuration(fileURL: FileManager.default .urls(for: .documentDirectory, in: .userDomainMask) .first?.appendingPathComponent("myrealm.realm"))let customRealm = try! Realm(configuration: config)


2. realm.wr

推荐