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

filter objects with two nested levels in a query with Realm

我有这样一个模型:

class CalendarEvent: Object, Mappable {


dynamic var exId = ""
@objc dynamic var title:String = ""
@objc dynamic var desc:String = ""
dynamic var fullDate = Date()
dynamic var date = ""
dynamic var time = ""
dynamic var location = ""
dynamic var subcategory:Subcategory?
dynamic var update = false
var participants = List<Participant>()
}

class Category:Object, Mappable{
dynamic var exId = ""
@objc dynamic var name="";
var subcategories = List<Subcategory>()
}

class Subcategory:Object, Mappable{
dynamic var exId = ""
dynamic var name = ""
let category = LinkingObjects(fromType: Category.self, property: "subcategories")
dynamic var active:Bool = true
dynamic var update = false
}

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

var results = realm.objects(CalendarEvent.self)
results = results.filter("ANY subcategory.exId == %@", subcategory!.exId)

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

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

let resultsSubcategory = realm.objects(Subcategory.self).filter("ANY category.exId == %@", category?.exId)
        results = results.filter("subcategory IN %@", resultsSubcategory)