Filter realm objects based on counting list<t>

你离开我真会死。 提交于 2019-12-10 17:54:42

问题


I'm trying to query a class based on the number of match objects. However, I keep getting following error 'Unable to parse the format string "matches.@count > 0"'. I've tried following code from the documentation, but it does not help. What I want is to get all leagues, which has more than 0 matches?

Class

class League:Object {
    dynamic var id: Int = 0
    dynamic var name: String? = ""
    var matches = List<Match>()


    override class func primaryKey() -> String {
        return "id"
    }
}

class Match:Object {
    dynamic var matchId: Int = 0
    dynamic var date: NSDate = NSDate()
    dynamic var homeName: String? = ""
    dynamic var awayName: String? = ""
    dynamic var homeAcro: String? = ""
    dynamic var awayAcro: String? = ""
    dynamic var awayScore: Int = 0
    dynamic var homeScore: Int = 0
    dynamic var leagueName: String? = ""
    dynamic var homeLogo: NSData = NSData()
    dynamic var awayLogo: NSData = NSData()

    override class func primaryKey() -> String {
        return "matchId"
    }

}

Tried code

let realm = try! Realm()
let predicate = NSPredicate(format: "matches.@count > 0")
menuArray = realm.objects(League).sorted("id").filter(predicate)

回答1:


MATCHES is a reserved word in the NSPredicate syntax. You can prefix reserved words with a # to escape them, like so:

let realm = try! Realm()
let predicate = NSPredicate(format: "#matches.@count > 0")
menuArray = realm.objects(League).sorted("id").filter(predicate)


来源:https://stackoverflow.com/questions/33742434/filter-realm-objects-based-on-counting-listt

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!