Swift 快速困难

Swift 快速困难,swift,nstimer,Swift,Nstimer,我正在尝试创建一个NSTimer,以便可以向下移动UIImageView,但 NSTImer遇到了困难,首先说这个 var timer = NSTimer.scheduledTimerWithTimeInterval(0.5, target:self(), selector: Selector ("mrockdown"), userInfo: nil, repeats: true) 调用中缺少参数#1的参数。但是当我从target:self()中删除括号时,它会告诉我 无法使用类型为“”的参数

我正在尝试创建一个NSTimer,以便可以向下移动UIImageView,但 NSTImer遇到了困难,首先说这个

var timer = NSTimer.scheduledTimerWithTimeInterval(0.5, target:self(), selector: Selector ("mrockdown"), userInfo: nil, repeats: true)
调用中缺少参数#1的参数。但是当我从
target:self()
中删除括号时,它会告诉我

无法使用类型为“”的参数列表调用“scheduledTimerWIthTimerInterval”(双精度,目标:ViewController->()->ViewController,选择器:选择器,用户信息:nil,重复Bool)


我该怎么办?

问题与您在何处这样说有关。您似乎试图将此作为属性声明的一部分:

class ViewController {
    var timer = ...
    // ...
}
但您不能这样做,因为就存储的属性而言,没有
self
。您需要将计时器声明为可选,然后稍后对其进行初始化:

class ViewController {
    var timer = NSTimer!
    func someMethod {
        timer = ...
    }
}

然后,您将删除括号(它们是错误的),所有内容都将正常编译。

您可以在要触发计时器的函数中执行此操作(即
viewDidLoad
或某些
iAction

也就是说,要设置视图动画,您应该使用以下选项:

UIView.animate(withDuration: yourDuration) {
    // set yourView's final position here
}
然而,你不应该仅仅为了制作动画而使用重复计时器。如果你是,停止。相反,使用动画。这就是它的用途。
UIView.animate(withDuration: yourDuration) {
    // set yourView's final position here
}