从 Realm 数据库中检索单个对象的正确方法

Posted

技术标签:

【中文标题】从 Realm 数据库中检索单个对象的正确方法【英文标题】:Correct way to retrieve a single object from Realm database 【发布时间】:2015-08-17 02:22:21 【问题描述】:

我绝对喜欢 Realm (0.92) 与 Swift 的结合,但对从数据库中读取对象有疑问。我的目标是检索具有已知唯一 ID(也恰好是主键)的单个对象。

所有文档似乎都围绕对多个对象的查询,然后过滤。在这种情况下,我知道对象 ID,并且由于它是唯一的,因此想直接检索它。

我目前的做法如下:

Realm().objects(Book).filter("id == %@", prevBook.nextID).first

这似乎很严厉。以前版本的文档表明有更直接的方法,但我似乎无法在文档中找到它。

我当前方法的问题是它在以下函数上出现异常而崩溃:

public func filter(predicateFormat: String, _ args: CVarArgType...) -> Results<T>

异常神秘地报告为:

EXC_BAD_ACCESS(代码=1,地址=0xedf)

非常欢迎任何建议。

预期一行问题:我已经确认用已知的良好 ID 替换 prevBook.nextID 并不能解决问题

【问题讨论】:

【参考方案1】:

object(ofType:forPrimaryKey:) 是您要查找的内容:Realm().object(ofType: Book.self, forPrimaryKey: prevBook.nextId)。如果您需要通过主键以外的其他方式搜索对象,没有比filter().first 更简单的方法了。

【讨论】:

谢谢,正是我想要的。我不得不用 objectForPrimaryKey(Book.self, key: prevBook.nextID) 来调用它 Java (android) 的等价物是什么? ... 以及 javascript (React Native) 的等价物是什么? 对于仍在寻找此内容的任何人,请知道该方法已更新为object(ofType:forPrimaryKey:)。上面的例子现在是Realm().object(ofType: Book.self, forPrimaryKey: prevBook.nextId)

以上是关于从 Realm 数据库中检索单个对象的正确方法的主要内容,如果未能解决你的问题,请参考以下文章

在 SwiftUI 列表中呈现来自 Realm 的数据的正确方法是啥

在 SwiftUI 列表中呈现来自 Realm 的数据的正确方法是啥

使用主键检索单个领域对象 - 错误:无效的对象 ID 字符串必须是 24 个十六进制数字

“需要领域迁移”,从领域数据库中检索值时出现异常

Realm JS:正确查询以使用 AND 条件从列表中获取对象

这是从 Firebase 检索数据的正确方法吗?