gpt4 book ai didi

swift - 在给定的 indexPath 之后生成所有 indexPaths 的数组

转载 作者:搜寻专家 更新时间:2023-11-01 06:33:02 34 4
gpt4 key购买 nike

我正在编写一个 UICollectionViewLayout 子类。

我知道 Collection View 有多少个部分...numberOfSections

我知道每个部分有多少项目...numberOfItems[section]

给定起始 indexPath IndexPath(item: x, section: y) 我需要创建一个数组,其中包含此起始 indexPath 之后的所有 indexPath。

我试过类似...

// iterate all sections
let indexPaths: [IndexPath] = (initialIndexPath.section..<numberOfSections).flatMap { section in
// find initial item in section
let initialItemIndex = section == initialIndexPath.section ? initialIndexPath.item + 1 : 0

// iterate all items in section
return (initialItemIndex..<(numberOfItems[section] ?? 0)).flatMap { item in
return IndexPath(item: item, section: section)
}
}

但这告诉我(在第二个 flatMap 上)...

'flatMap' produces '[SegmentOfResult.Iterator.Element]', not the expected contextual result type 'IndexPath?'

我在布局的另一部分使用了类似的东西,但不太确定为什么它在这里不起作用。

有更好的方法吗?

最佳答案

好吧,经过一番摸索之后,我确定这取决于 Swift 推断闭包类型的方式。

我通过将第一个闭包的类型从 section in 显式设置为 (section) -> ([IndexPath]) 来修复它

// iterate all sections
let indexPaths: [IndexPath] = (initialIndexPath.section..<numberOfSections).flatMap { (section) -> ([IndexPath]) in
// find initial item in section
let initialItemIndex = section == initialIndexPath.section ? initialIndexPath.item + 1 : 0

// iterate all items in section
return (initialItemIndex..<(numberOfItems[section] ?? 0)).flatMap { item in
return IndexPath(item: item, section: section)
}
}

关于swift - 在给定的 indexPath 之后生成所有 indexPaths 的数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45056277/

34 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com