迅速将索引路径数组转换为int数组



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

我一直在尝试几个小时的任何帮助,都将不胜感激,谢谢。

您可以使用地图功能:

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

或强制解开:

let indexes = collectionView.indexPathsForSelectedItems!.map{ $0.item }

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

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

您可以通过map轻松获得它:

let arrayOfIndexPathItems = self.collectionView.indexPathsForSelectedItems?.map({ $0.item })

请确保使用IndexPathitem S属性,因为您正在使用collectionView

上面的答案是绝对正确的!这是同一件事,但对于不熟悉地图功能的人来说,更长的版本,也许更容易理解的版本

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

使用compactmap更干净。

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

相关内容

  • 没有找到相关文章