我有一个NSSet
(from CoreData
) 包含Element
acolumn
和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
值并按第一项对外部数组进行排序或与
reduce(into:)
或者您可以获得 的嵌套数组
Element
,内部数组按行排序,外部数组按列排序。