Search code examples
iosswiftdatabasecountrealm

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


Here is what my class looks like:

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

I want to return number of tags from all Cards with forwarded set_id.
Here is the method:

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)
    }

Solution

  • I understand that tags: String contains comma separated elements and you want to find the number of elements.

    You can do that by iterating over totalCards. For each card, split the tags into an array and count the number of elements.

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

    components(separatedBy:) documentation