为什么我得到“'Aggregate operations can only be used on RLMArray properties'”?
Why I'm getting "'Aggregate operations can only be used on RLMArray properties'"?
我的 Realm
数据库有以下查询
realm.objects(Event)
.filter("ANY presentation.speakers.lastName CONTAINS [c]%@", searchTerm)
不幸的是它不工作,我收到以下错误
'Invalid predicate', reason: 'Aggregate operations can only be used on RLMArray properties'
presentation
是在 Event
class
上定义的可选实体
public dynamic var presentation : Presentation?
speakers
是 List<PresentationSpeakers>
在演示文稿中这样定义的
public let speakers = List<PresentationSpeaker>()
我的感觉是 ANY
必须直接对集合进行操作,但 speakers
不是 Event
的直接 属性。
我的查询有什么问题,我该如何正确执行它?
因为 presentation
是一对一的关系,所以没有必要在你的查询中写 ANY
:
realm.objects(Event)
.filter("presentation.speakers.lastName CONTAINS [c]%@", searchTerm)
ANY
对于 speakers
属性 是隐含的,因为它是一个嵌套的键路径。要指定 ANY
以外的内容,您可以像这样在 speakers
上使用修饰符:
realm.objects(Event)
.filter("presentation.speakers[FIRST].lastName CONTAINS [c]%@", searchTerm)
但是,Realm 还不支持这种查询。
有关谓词以及 Realm 支持哪些谓词的更多信息,请参阅 Realm 的谓词作弊 sheet:https://realm.io/news/nspredicate-cheatsheet/
我的 Realm
数据库有以下查询
realm.objects(Event)
.filter("ANY presentation.speakers.lastName CONTAINS [c]%@", searchTerm)
不幸的是它不工作,我收到以下错误
'Invalid predicate', reason: 'Aggregate operations can only be used on RLMArray properties'
presentation
是在 Event
class
public dynamic var presentation : Presentation?
speakers
是 List<PresentationSpeakers>
在演示文稿中这样定义的
public let speakers = List<PresentationSpeaker>()
我的感觉是 ANY
必须直接对集合进行操作,但 speakers
不是 Event
的直接 属性。
我的查询有什么问题,我该如何正确执行它?
因为 presentation
是一对一的关系,所以没有必要在你的查询中写 ANY
:
realm.objects(Event)
.filter("presentation.speakers.lastName CONTAINS [c]%@", searchTerm)
ANY
对于 speakers
属性 是隐含的,因为它是一个嵌套的键路径。要指定 ANY
以外的内容,您可以像这样在 speakers
上使用修饰符:
realm.objects(Event)
.filter("presentation.speakers[FIRST].lastName CONTAINS [c]%@", searchTerm)
但是,Realm 还不支持这种查询。
有关谓词以及 Realm 支持哪些谓词的更多信息,请参阅 Realm 的谓词作弊 sheet:https://realm.io/news/nspredicate-cheatsheet/