当前位置:  开发笔记 > IOS > 正文

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

如何解决《为什么我得到"'聚合操作只能用于RLMArray属性'"?》经验,为你挑选了1个好方法。

我在我的Realm数据库上有以下查询

realm.objects(Event)
     .filter("ANY presentation.speakers.lastName CONTAINS [c]%@", searchTerm)

不幸的是它不起作用,我收到以下错误

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

presentationEvent类上定义的可选实体

public dynamic var presentation : Presentation?

speakersList这样定义的演示文稿

public let speakers = List()

我的感觉是ANY必须直接在一个集合上操作,但speakers 不是直接属性Event.

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



1> jpsim..:

由于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/

推荐阅读
郑小蒜9299_941611_G
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有