我有一个CollectionView,其中包含......
Fruit(name: String, price: Int, imageUrl: String)
用户可以选择多个Fruits
,然后进行“签出”,即选择了所有水果的UITableView
。
UITableViewCell
包含:amountLabel
,fruitLabel
,priceLabel
。
在此视图中,我想显示每种水果的数量和总价。
做到这一点的最佳方法是什么?
我现在看到的是:
Banana - 1$
Orange - 3$
Banana - 1$
Apple - 2$
Apple - 2$
Banana - 1$
Orange - 3$
Orange - 3$
total: 16$
我想看的东西:
3x Banana - 3$
2x Apple - 4$
3x Orange - 9$
total: 16$
答案 0 :(得分:2)
您可以对数组进行分组并汇总价格
let grouped = Dictionary(grouping: fruits, by: {$0.name})
var total = 0
for (key, value) in grouped {
let price = value.reduce(0, {$0 + $1.price})
print(value.count, key, "\(price)$")
total += price
}
print("total: \(total)$")
答案 1 :(得分:0)
这是NSCountedSet
的完美案例。
You can see the documentation for NSCountedSet
here.
您可以创建一个NSCountedSet
,例如...
let countedSet = NSCountedSet(array: fruits)
然后像这样获取信息...
countedSet.objectEnumerator.forEach {
let count = countedSet.count(for: $0)
print($0.name, count, count * $0.price)
}
对于表格视图,您可以使用countedSet.objectEnumerator.allObjects.count
作为行数。