Swift- 将索引路径数组转换为 Int 数组

Swift- Converting Index path array to Int array

我正在尝试从 swift 4 中的 UICollectionView 生成选定值的数组。我使用 self.collectionView.indexPathsForSelectedItems 方法,该方法 returns 选定的项目作为类型的数组索引路径。例如,如果选择了元素 0 和 2,它 returns [[0, 0], [0, 2]] 我想知道如何将其处理成 Int 类型的数组以将其存储为 [ 0,2]。

我已经尝试了几个小时,如果有任何帮助,我们将不胜感激,谢谢。

您可以为此使用地图功能:

guard let indexPaths: [IndexPath] = collectionView.indexPathsForSelectedItems else { return }
let indexes = indexPaths.map({ [=10=].item })

或强制展开:

let indexes = collectionView.indexPathsForSelectedItems!.map{ [=11=].item }

评论部分建议的另一个选项

let indexes = (collectionView.indexPathsForSelectedItems ?? []).map{ [=12=].row }

您可以通过 map 轻松获得:

let arrayOfIndexPathItems = self.collectionView.indexPathsForSelectedItems?.map({ [=10=].item })

请务必使用 IndexPathitems 属性,因为您正在使用 collectionView

以上回答完全正确!这是同一件事,但对于不熟悉 map 函数的人来说,只是更长且可能更容易理解的版本

let indexes = collectionView.indexPathsForSelectedItems?.map { (indexPath) -> Int in
return indexPath.item }

使用 compactMap 更干净。

let newIndexedData = collectionView.indexPathsForSelectedItems?.compactMap { yourArray[[=10=].row] } ?? []