在使用 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)
我有这样一个模型:
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)