代码来自一个名为 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))
})
最佳答案
在 Swift 2 中,map
不再是全局函数,它是您在序列上 调用的方法。
代替:
let result = map(array, closure)
做:
let result = array.map(closure)
同样的概念也适用于其他序列方法,如enumerate
、split
等。
关于ios - 更新到 Swift 2.0 'map' 不可用 : call the 'map()' method on the sequence,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32951594/