我非常喜欢与Swift结合的Realm(0.92),但是有一个关于从数据库中读取对象的问题。我的目标是检索具有已知唯一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并不能解决问题
答案 0 :(得分:69)
object(ofType:forPrimaryKey:)是您正在寻找的内容:Realm().object(ofType: Book.self, forPrimaryKey: prevBook.nextId)
。如果您需要通过主键之外的其他内容搜索对象,那么filter().first
没有比{{1}}更简单的方法。