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 })
请务必使用 IndexPath
的 item
s 属性,因为您正在使用 collectionView
。
以上回答完全正确!这是同一件事,但对于不熟悉 map 函数的人来说,只是更长且可能更容易理解的版本
let indexes = collectionView.indexPathsForSelectedItems?.map { (indexPath) -> Int in
return indexPath.item }
使用 compactMap 更干净。
let newIndexedData = collectionView.indexPathsForSelectedItems?.compactMap { yourArray[[=10=].row] } ?? []
我正在尝试从 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 })
请务必使用 IndexPath
的 item
s 属性,因为您正在使用 collectionView
。
以上回答完全正确!这是同一件事,但对于不熟悉 map 函数的人来说,只是更长且可能更容易理解的版本
let indexes = collectionView.indexPathsForSelectedItems?.map { (indexPath) -> Int in
return indexPath.item }
使用 compactMap 更干净。
let newIndexedData = collectionView.indexPathsForSelectedItems?.compactMap { yourArray[[=10=].row] } ?? []