精选文章

20. Realm 数据库

2018-04-12 · Realm

20. Realm 数据库

目标:模型清晰、事务正确、查询可维护。

一、安装(SPM)

https://github.com/realm/realm-swift

二、模型定义

import RealmSwift

class Post: Object {
    @Persisted(primaryKey: true) var id: Int
    @Persisted var title: String = ""
    @Persisted var createdAt: Date = Date()
}

三、写入数据

let realm = try! Realm()

let post = Post()
post.id = 1
post.title = "Realm 入门"

try! realm.write {
    realm.add(post, update: .modified)
}

四、查询与排序

let posts = realm.objects(Post.self)
    .filter("title CONTAINS[c] %@", "Realm")
    .sorted(byKeyPath: "createdAt", ascending: false)

五、删除

if let first = posts.first {
    try! realm.write {
        realm.delete(first)
    }
}

六、线程限制

Realm 对象不能跨线程直接传递,需要 ThreadSafeReference

let ref = ThreadSafeReference(to: post)
DispatchQueue.global().async {
    let realm = try! Realm()
    if let resolved = realm.resolve(ref) {
        print(resolved.title)
    }
}

Realm 的关键点是“写入必须在事务中、对象不可跨线程直接使用”。

JJ

作者简介

专注于内容创作、产品策略与设计实践。欢迎交流合作。

上一篇 下一篇