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
})
谢谢。编码愉快 :)
这是我的 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
})
谢谢。编码愉快 :)