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

And*_*ndy 42 database realm swift

我非常喜欢与Swift结合使用Realm(0.92)但是有一个关于从数据库中读取对象的问题.我的目标是使用已知的唯一ID(也恰好是主键)检索单个对象.

所有文档似乎都是针对多个对象的查询,然后对这些对象进行过滤.在这种情况下,我知道对象ID,因为它已知是唯一的,所以想直接检索它.

我目前的做法如下:

Realm().objects(Book).filter("id == %@", prevBook.nextID).first
Run Code Online (Sandbox Code Playgroud)

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

我当前的方法的问题是它崩溃了以下函数的异常:

public func filter(predicateFormat: String, _ args: CVarArgType...) -> Results<T>
Run Code Online (Sandbox Code Playgroud)

神奇地报告了例外情况:

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

任何建议都非常欢迎.

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

Tho*_*yne 75

object(ofType:forPrimaryKey :)就是你要找的东西:Realm().object(ofType: Book.self, forPrimaryKey: prevBook.nextId).没有比filter().first你需要通过主键以外的东西搜索对象更简单的方法.

  • 对于仍在寻找此问题的人,请知道该方法已更新为`object(ofType:forPrimaryKey:)`.上面的例子现在是`Realm().object(ofType:Book.self,forPrimaryKey:prevBook.nextId)` (3认同)
  • 什么是Java(Android)的等价物? (2认同)