使用 Realm 在查询中过滤具有两个嵌套级别的对象

Joa*_*aza 1 subquery realm ios swift swift3

我有一个这样的模型:

\n\n
class CalendarEvent: Object, Mappable {\n\n\ndynamic var exId = ""\n@objc dynamic var title:String = ""\n@objc dynamic var desc:String = ""\ndynamic var fullDate = Date()\ndynamic var date = ""\ndynamic var time = ""\ndynamic var location = ""\ndynamic var subcategory:Subcategory?\ndynamic var update = false\nvar participants = List<Participant>()\n}\n\nclass Category:Object, Mappable{\ndynamic var exId = ""\n@objc dynamic var name="";\nvar subcategories = List<Subcategory>()\n}\n\nclass Subcategory:Object, Mappable{\ndynamic var exId = ""\ndynamic var name = ""\nlet category = LinkingObjects(fromType: Category.self, property: "subcategories")\ndynamic var active:Bool = true\ndynamic var update = false\n}\n
Run Code Online (Sandbox Code Playgroud)\n\n

我需要知道哪些 CalendarEvents 来自某个类别,何时来自子类别,我可以这样做:

\n\n
var results = realm.objects(CalendarEvent.self)\nresults = results.filter("ANY subcategory.exId == %@", subcategory!.exId)\n
Run Code Online (Sandbox Code Playgroud)\n\n

但是,当我需要获取按类别过滤的 CalendarEvents 时,我不知道该怎么做。我查看了解决方案,但没有找到 \xc2\xb4t 任何地方。请帮忙!

\n

Joa*_*aza 5

作为记录,我找到了解决方案。它很简单,您需要细分查询和链接,然后使用“IN”。例如:

\n\n
let resultsSubcategory = realm.objects(Subcategory.self).filter("ANY category.exId == %@", category?.exId)\n        results = results.filter("subcategory IN %@", resultsSubcategory) \n
Run Code Online (Sandbox Code Playgroud)\n