从 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 个十六进制数字