我在我的Realm
数据库上有以下查询
realm.objects(Event) .filter("ANY presentation.speakers.lastName CONTAINS [c]%@", searchTerm)
不幸的是它不起作用,我收到以下错误
'无效谓词',原因:'聚合操作只能用于RLMArray属性'
presentation
是Event
类上定义的可选实体
public dynamic var presentation : Presentation?
speakers
是List
这样定义的演示文稿
public let speakers = List()
我的感觉是ANY
必须直接在一个集合上操作,但speakers
不是直接属性Event
.
我的查询有什么问题,如何正确实现?
由于presentation
是一对一的关系,因此无需ANY
在您的查询中写入:
realm.objects(Event) .filter("presentation.speakers.lastName CONTAINS [c]%@", searchTerm)
的ANY
是隐含的speakers
,因为它是一个嵌套的keyPath属性.要指定其他内容ANY
,您可以speakers
像这样使用修饰符:
realm.objects(Event) .filter("presentation.speakers[FIRST].lastName CONTAINS [c]%@", searchTerm)
但是,Realm还不支持这种查询.
有关谓词以及Realm支持哪些谓词的更多信息,请参阅Realm的谓词备忘单:https://realm.io/news/nspredicate-cheatsheet/