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

Correct way to retrieve a single object from Realm database

我非常喜欢 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 (code=1, address=0xedf)

非常欢迎任何建议。

预料到一行提问:我已经确认用一个已知的、好的 ID 替换 prevBook.nextID 并不能解决问题

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