0

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

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

4

4 回答 4

3

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

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 }
于 2018-02-09T13:33:10.507 回答
0

使用 compactMap 更干净。

let newIndexedData = collectionView.indexPathsForSelectedItems?.compactMap { yourArray[$0.row] } ?? []
于 2019-09-25T14:02:02.693 回答
0

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

let indexes = collectionView.indexPathsForSelectedItems?.map { (indexPath) -> Int in
return indexPath.item }
于 2018-02-09T13:43:59.143 回答
0

您可以通过以下方式轻松获得它map

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

请务必使用item的 s 属性IndexPath,因为您正在使用collectionView.

于 2018-02-09T13:33:21.630 回答