在通话中额外参数"延迟"

And*_*s V 0 xcode swift

将变量放入CGAffineTransformMakeTranslation后,XCode向我显示"调用中的额外参数'延迟'.知道为什么吗?认为它是一个错误.

        var direction = 0
        UIView.animateWithDuration(0.2, delay: 0.0, options: UIViewAnimationOptions.Repeat, animations: {
            self.NameInput.transform = CGAffineTransformMakeTranslation(5*direction, 0);
            }, completion: nil)
Run Code Online (Sandbox Code Playgroud)

rob*_*off 6

问题是Swift编译器有错误的错误消息.真的,非常糟糕的错误消息.

这是修复:

var direction = 0
UIView.animateWithDuration(0.2, delay: 0.0, options: UIViewAnimationOptions.Repeat, animations: {
    self.NameInput.transform = CGAffineTransformMakeTranslation(5*CGFloat(direction), 0)
    //                                                            ^^^^^^^^         ^
    }, completion: nil)
Run Code Online (Sandbox Code Playgroud)

animations由于类型不正确,编译器无法编译块.所以它不知道块的类型.它替换了块的错误类型.然后它试图找到一个animateWithDuration以错误类型作为参数的重载.没有一个,所以它任意选择了一个过载.具体来说,它选择了animateWithDuration(_,animations:)重载,它没有delay参数.因此,您收到的错误消息.