-2

我正在尝试将一个函数转换为较新的 Swift3 版本,但出现错误。该操作发生在称为 CircularCollectionViewLayoutAttributes 的 UICollectionViewLayoutAttributes 类中,类开始如下:

class CircularCollectionViewLayoutAttributes: UICollectionViewLayoutAttributes { ...

功能代码:

override func copy(with zone: NSZone? = nil) -> Any {
let copiedAttributes: CircularCollectionViewLayoutAttributes = super.copy(zone) as! CircularCollectionViewLayoutAttributes
copiedAttributes.anchorPoint = self.anchorPoint
copiedAttributes.angle = self.angle
return copiedAttributes

}

我几乎设法对其进行了改造,但仍然在线出现一个错误:

let copiedAttributes: CircularCollectionViewLayoutAttributes = super.copy(zone) as! CircularCollectionViewLayoutAttributes

说:“参数传递给不带参数的调用”并强调“区域”。

非常感谢您的帮助。

4

1 回答 1

0

将 API 从 Objective-C 桥接到 Swift 时发生的变化之一是,许多方法名称中的介词已经变成了参数标签。介词或动词宾语后面的名词经常被省略,也用作内部参数名称。copyWithZone是其中之一。

这是 Swift 中的声明:

func copy(with zone: NSZone? = nil) -> Any

其他示例包括prepare(for:)from prepareForSeguepresent(_:animated:completion:)frompresentViewConroller等。

于 2018-01-29T18:02:19.003 回答