在Swift中将两个参数传递给NSTimer

Ben*_*iid 12 arguments nstimer ios swift

我有一个函数,包含TextView中的文本字符串.我希望随着时间的推移改变该文本的淡化.这不是我对如何褪色的实现,而是如何将两个参数(alpha值和应该褪色的字符范围)传递给NSTimer中的Selector.

我看过这个问题,但这并没有给我一个答案.

这就是我现在所拥有的:

func someFunc(){

    var timer: NSTimer = NSTimer.scheduledTimerWithTimeInterval(0.1, target: self, selector: Selector("val:"), userInfo: 5, "someString", repeats: true)

}


func val(val1: Int, val2: String){

    println("printing \(val1) and \(val2)")

}
Run Code Online (Sandbox Code Playgroud)

然而,它给我一个"额外参数'选择器'调用'错误.我需要能够传递两个参数,但我也无法正确传递一个参数; 从函数中删除val2并删除"someString",所以我只传递一个参数,导致函数在每个时间步打印"print 140611230609088"行.

Ras*_*had 30

使用您的对象创建一个数组并将其发送到userInfo.试试这个:

func someFunc(){
    var arr = ["one", "two"] 
    var timer: NSTimer = NSTimer.scheduledTimerWithTimeInterval(0.1, target: self, selector: Selector("val:"), userInfo: arr, repeats: true)

}


func val(timer: NSTimer){

    //You'll get an array in timer.userInfo
    // arr = timer.userInfo.
    // Now you'll get you data in each index of arr

}
Run Code Online (Sandbox Code Playgroud)

希望这可以帮助.. :)


Dan*_*elR 5

首先,你有太多的论点.其次,func接收NSTimer,因此您必须使用AnyObject或NSTimer.

所以我的建议是使用字典或数组并将其作为userInfo参数传递,如下所示:

func someFunc(){

    var timer: NSTimer = NSTimer.scheduledTimerWithTimeInterval(0.1, target: self, selector: Selector("val:"), userInfo: ["key1" : 1 , "key2" : "aString"], repeats: true)     
}


func val(val : NSTimer?) {
    println("printing \(val?.userInfo)")
}
Run Code Online (Sandbox Code Playgroud)