更新到Swift 2.0'map'不可用:在序列上调用'map()'方法

时间:2015-10-05 14:53:50

标签: ios xcode swift swift2

代码来自名为ZLBalancedFlowLayout的github控件。 (link)。我一直在尝试更新到Swift 2.0但我得到这个错误“'map'不可用:在序列上调用'map()'方法”。任何意见将是有益的。提前谢谢。

 private func collectionView(collectionView:UICollectionView, framesForItemsInSection section:Int, inout updateContentSize contentSize:CGSize) -> ([CGRect], [CGFloat]) {

    let maxWidth = Float(scrollDirection == .Vertical ? contentSize.width : contentSize.height),
    widths = map(0..<collectionView.numberOfItemsInSection(section), {(item: Int) -> Float in
        let itemSize = self.sizeForItemAtIndexPath(NSIndexPath(forItem: item, inSection: section)),
        ratio = self.scrollDirection == .Vertical ?
            itemSize.width/itemSize.height :
            itemSize.height/itemSize.width
        return min(Float(ratio*self.rowHeight), Float(maxWidth))
    })

2 个答案:

答案 0 :(得分:6)

在Swift 2中map不再是全局函数,它是一种在序列上调用的方法。

而不是:

let result = map(array, closure)

执行:

let result = array.map(closure)

同样的概念也适用于enumeratesplit等其他序列方法。

答案 1 :(得分:2)

在Swift 2中,许多功能已从

更改
functionName(object, action)

object.functionName(action)