从 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
更简单的方法了。
我非常喜欢 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
更简单的方法了。