【发布时间】:2017-11-24 03:36:51
【问题描述】:
如何将重复的类别元素过滤到不同的数组中并计算它们的数量?
这是格式,记录来自核心数据。
var record = [Record]()
[<Record:...; data: {accountbook = "MyBook";
amount = "10.50";
category = "A";
id = 1;
},<Record:...; data: {accountbook = "MyBook";
amount = "5.50";
category = "B";
id = 2;
},<Record:...; data: {accountbook = "MyBook";
amount = "4.50";
category = "B";
id = 3;
}]
我想要什么
var category = ["A", "B"] //success
var total = [10.50, 10.00]
这是我查找类别的方法,它有效,但如何对同一类别进行分组并求和?
var category =[String]()
for categoryObject in record{
if let categoryItem = categoryObject.category{
category.append(categoryItem)
}
}
//I tried this code to group the same category but fail.
let result = Set(record).map{ category in return record.filter{$0 == category} }
另一种方式是这样。但是如果我有 A-Z 类别呢?它将有很长的代码。有什么方法可以检测到相同的值并将其拆分为不同的数组,以便我可以按类别求和。
categoryFilter = record.filter { $0.category!.contains("A") }
【问题讨论】: