Swift 3.0:“IndexSet”类型的值没有成员“enumerateIndexesUsingBlock”
Posted
技术标签:
【中文标题】Swift 3.0:“IndexSet”类型的值没有成员“enumerateIndexesUsingBlock”【英文标题】:Swift 3.0: Value of type 'IndexSet' has no member 'enumerateIndexesUsingBlock' 【发布时间】:2016-09-22 12:02:58 【问题描述】:在 enumerateIndexesUsingBlock 处收到 Value of type 'IndexSet' has no member 'enumerateIndexesUsingBlock'
错误。
/**
Extension for creating index paths from an index set
*/
extension IndexSet
/**
- parameter section: The section for the created NSIndexPaths
- return: An array with NSIndexPaths
*/
func bs_indexPathsForSection(_ section: Int) -> [IndexPath]
var indexPaths: [IndexPath] = []
self.enumerateIndexesUsingBlock (index:Int, _) in
indexPaths.append(IndexPath(item: index, section: section));
return indexPaths
【问题讨论】:
如果使用 for-in 代替 block 会怎样? >>> for (index,value) in self.enumerated() print("index = (index), value = (value)") 【参考方案1】:Foundation 类型 NSIndexSet
有一个 enumerateIndexesUsingBlock
方法。 Swift 3 中对应的覆盖类型 IndexSet
是一个集合,因此您可以只 map 每个
IndexPath
的索引:
extension IndexSet
func bs_indexPathsForSection(_ section: Int) -> [IndexPath]
return self.map IndexPath(item: $0, section: section)
【讨论】:
以上是关于Swift 3.0:“IndexSet”类型的值没有成员“enumerateIndexesUsingBlock”的主要内容,如果未能解决你的问题,请参考以下文章
Swift 3.0 迁移后的 Alamofire 错误:“无法将 '(URL, HTTPURLResponse)-> (URL)' 类型的值转换为预期的参数类型 'Parameters'”?