NSTimer 中的错误(Swift:Xcode)

Posted

技术标签:

【中文标题】NSTimer 中的错误(Swift:Xcode)【英文标题】:Error in NSTimer (Swift: Xcode) 【发布时间】:2015-10-15 12:30:34 【问题描述】:

我正在制作一个计时器,它将使用 swift 2、Xcode 7 重复调用一个函数。这个函数发送一个本地推送通知。我的计时器变量在 ViewController.swift 中的 viewDidLoad() 之外声明。

var timer = NSTimer.scheduledTimerWithTimeInterval(1, target: self ,       selector: Selector("notification"), userInfo: nil, repeats: true)

我收到一个错误:

参数类型'NSObject -> () -> ViewController 不符合预期类型'AnyObject'

目标自我似乎有问题,因为它以红色突出显示。

如果需要,这是我的完整代码:

import UIKit

class ViewController: UIViewController 

var time = 10
 var timer = NSTimer.scheduledTimerWithTimeInterval(1, target: self , selector: Selector("notification"), userInfo: nil, repeats: true)

override func viewDidLoad() 
    super.viewDidLoad()
    // Do any additional setup after loading the view, typically from a nib.




override func didReceiveMemoryWarning() 
    super.didReceiveMemoryWarning()
    // Dispose of any resources that can be recreated.


@IBAction func btnPressed(sender: AnyObject) 
 let alertView = UIAlertController(title: "You won!", message: "Press Go to continue!", preferredStyle: UIAlertControllerStyle.Alert)
    self.presentViewController(alertView, animated: true, completion: nil)

    alertView.addAction(UIAlertAction(title: "Go", style: UIAlertActionStyle.Default, handler: nil))



func notification()
    time--
    if (time == 0)


    let notification = UILocalNotification()
    notification.alertAction = "Go back to App!"
    notification.alertBody = "Pls Go back to my App!"
    notification.fireDate = NSDate(timeIntervalSinceNow: 0)

    UIApplication.sharedApplication().scheduleLocalNotification(notification)
        timer.invalidate()





提前致谢:)

【问题讨论】:

【参考方案1】:

尝试声明 var timer only 设置为 NSTimer.init() 像:

var timer = NSTimer.init()

然后,将带有 scheduleTimerWithInterval 的初始化放在 viewDidLoad() 中:

override func viewDidLoad() 
    super.viewDidLoad()
    timer = NSTimer.scheduledTimerWithTimeInterval(1, target: self, selector: "notification", userInfo: nil, repeats: true)

【讨论】:

以上是关于NSTimer 中的错误(Swift:Xcode)的主要内容,如果未能解决你的问题,请参考以下文章

NSTimer 中的 UserInfo 没有传递正确的信息 - Swift

目标 C 项目中的 Xcode 8.3 Swift 版本错误 (SWIFT_VERSION)

swift 3 和 Xcode 8 中的完成处理程序错误

NSTimer - 如何在Swift中延迟

Xcode:Alamofire 源代码中的 Swift Dropbox 错误

Swift 4.2,Xcode 游乐场中的 String firstIndex() 函数错误