Swift Realm - 如何计算单个列中的所有数据?

Swift Realm - How to COUNT all data from single column?

这是我的 class 的样子:

class Card : Object {
    @objc dynamic var tags: String = ""
    @objc dynamic var set_id: String = ""
}

我想从所有卡片中return个标签并转发set_id
这是方法:

func totalTags() -> String {
        var tagCounter: Int = 0
        let realm = try? Realm()
        let totalCards = realm!.objects(Card.self).filter("set_id = '\(setId)'") //all Cards with selected set_id, set_id is global var.
        for card in 0...totalCards.count {
            //every 'card' has tags, but there there can me more tags,
            //like : tags="one,twitter,world,Europe"...
            //And I want to count all of them for every 'card'
            let result = realm.objects(Card.self).filter() //How to filter?
            tagCounter += //what? result.count or something?
        }
        return String(tagCounter)
    }

我了解到 tags: String 包含以逗号分隔的元素,而您想查找元素的数量。

您可以通过遍历 totalCards 来做到这一点。对于每个 card,将 tags 拆分为一个数组并计算元素的数量。

for card in totalCards {
    tagCounter += card.tags.components(separatedBy: ",").count
}

components(separatedBy:) documentation

我知道这个问题已经得到解答,但我只想分享我自己的做法。

let tagsCount = totalCards.map { [=10=].tags.components(separatedBy: ",") }.flatMap { [=10=] }.filter { ![=10=].isEmpty }.reduce(into: 0, { result, _  in
        result += 1
 })

谢谢。编码愉快 :)