我有一个
NSSet
(来自 CoreData
),其中包含 Element
以及 column
和 row
属性(都是 Int16
)。NSSet
转换为数组 [[Element]]
的数组(它将是列的数组,值将是列中的行的数组),以处理坐标中的漏洞并尊重订购。
例如,如果我有以下元素:
let mySet = NSSet([
Element(column: 1, row: 1, id: 'el1'),
Element(column: 3, row: 0, id: 'el2),
Element(column: 3, row: 2, id: 'el3'),
Element(column: 6, row: 12, id: 'el4'),
Element(column: 6, row: 6, id: 'el5),
Element(column: 6, row: 1, id: 'el6')
]);
// I would get an array like:
let resultArray = [
[el1],
[el2, el3],
[el6, el5, el4]
]
我尝试了各种解决方案,例如
Dictionary(grouping: ..)
,reduce
等...但无法使其正常工作。
代码无法编译。
Dictionary(grouping:by:)
确实是一个可行的方法。
Set<Element>
column
属性将数组分组到字典中,并得到 values
id
值let mapped = Dictionary(grouping: mySwiftSet, by: \.column)
.values
.map { items in
items.map(\.id).sorted()
}