我正在尝试从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 })
请确保使用IndexPath
的item
S属性,因为您正在使用collectionView
。
上面的答案是绝对正确的!这是同一件事,但对于不熟悉地图功能的人来说,更长的版本,也许更容易理解的版本
let indexes = collectionView.indexPathsForSelectedItems?.map { (indexPath) -> Int in
return indexPath.item }
使用compactmap更干净。
let newIndexedData = collectionView.indexPathsForSelectedItems?.compactMap { yourArray[$0.row] } ?? []