我正在尝试将一个函数转换为更新的Swift3版本,但是收到错误。该操作发生在UICollectionViewLayoutAttributes类中,该类称为CircularCollectionViewLayoutAttributes,类开始如下:
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
说:"参数传递给不带参数的调用"并强调" zone"。
非常感谢您的帮助。
答案 0 :(得分:0)
将API从Objective-C桥接到Swift时发生的一个变化是,许多方法名称中的介词已经变成了参数标签。介词后的名词或动词的对象经常被省略并用作内部参数名。 copyWithZone
就是其中之一。
以下是Swift中的声明:
func copy(with zone: NSZone? = nil) -> Any
其他示例包括来自prepare(for:)
的{{1}},来自prepareForSegue
的{{1}}等。