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'”?

在Swift中从整数数组创建NSIndexSet

解析加载图像 Swift 3.0

无法将 String 类型的值分配给 AnyObject 类型?斯威夫特 3.0

类型 Any 没有下标成员 Swift 3.0

无法为类型 Unsafepointer Swift 3.0 转换初始化变量