代码来自名为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))
})
答案 0 :(得分:6)
在Swift 2中map
不再是全局函数,它是一种在序列上调用的方法。
而不是:
let result = map(array, closure)
执行:
let result = array.map(closure)
同样的概念也适用于enumerate
,split
等其他序列方法。
答案 1 :(得分:2)
在Swift 2中,许多功能已从
更改functionName(object, action)
到
object.functionName(action)