为什么我得到“'聚合操作只能用于RLMArray属性'”?

时间:2015-12-07 03:18:40

标签: ios realm

我在Realm数据库

上有以下查询
realm.objects(Event)
     .filter("ANY presentation.speakers.lastName CONTAINS [c]%@", searchTerm)

不幸的是它没有用,我收到了以下错误

  

'无效谓词',原因:'聚合操作只能用于RLMArray属性'

presentationEvent

上定义的可选实体
public dynamic var presentation : Presentation?

speakersList<PresentationSpeakers>在演示文稿

上定义的public let speakers = List<PresentationSpeaker>()
ANY

我的感觉是speakers必须直接对集合进行操作,但Event不是yes的直接属性。

我的查询有什么问题,我该如何正确实现?

1 个答案:

答案 0 :(得分:6)

由于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的谓词备忘单:NUnit has