Arrays 对数组的数组中的项进行计数

Arrays 对数组的数组中的项进行计数,arrays,core-data,swift4,nsfetchrequest,Arrays,Core Data,Swift4,Nsfetchrequest,我在核心数据中存储了一个数组作为可转换的 e、 g 我想要一个函数,它计算每种颜色在核心数据属性colorArray中出现的总次数。因此,对于上述数据,函数将打印: Red = 3 Blue = 4 Green = 4 最好的方法是什么?使用NSCountedSet的简单解决方案 展平阵列。 从数组中创建计数集。 列举集合。 该示例使用字符串 let colorArray = [["Red", "Blue", "Green"], ["Red"], ["Blue", "Green"], ["Gr

我在核心数据中存储了一个数组作为可转换的

e、 g

我想要一个函数,它计算每种颜色在核心数据属性colorArray中出现的总次数。因此,对于上述数据,函数将打印:

Red = 3
Blue = 4
Green = 4
最好的方法是什么?

使用NSCountedSet的简单解决方案

展平阵列。 从数组中创建计数集。 列举集合。 该示例使用字符串

let colorArray = [["Red", "Blue", "Green"], ["Red"], ["Blue", "Green"], ["Green"], ["Blue"], ["Blue", "Green", "Red"]]

let flattened = colorArray.reduce([], +)
let set = NSCountedSet(array: flattened)
for element in set {
    print("\(element) = \(set.count(for: element))")
}

非常感谢。如果我将代码中的数组设置为:[[Red,Blue,Green],[Red],[Blue,Green],[Green],[Blue],[Blue,Green,Red]],这将非常有效。但是,我无法从核心数据中检索到所需的实际数组。你知道怎么做吗?我把它保存在一个名为Item的实体中。属性名是colorArray,类型是transformable如果它是可转换的,为什么不能检索它?我使用字符串,因为我仍然不知道颜色名代表什么。
let colorArray = [["Red", "Blue", "Green"], ["Red"], ["Blue", "Green"], ["Green"], ["Blue"], ["Blue", "Green", "Red"]]

let flattened = colorArray.reduce([], +)
let set = NSCountedSet(array: flattened)
for element in set {
    print("\(element) = \(set.count(for: element))")
}