在Swift中使用NSTimer查找选择器时出错

时间:2015-08-29 16:51:37

标签: ios swift nstimer xcode6.4

我正在尝试使用NSTimer函数每五秒检查一次请求。除了我收到错误:

MyApp[13952:2483629] *** NSForwarding: warning: object 0x7f98cd15ab80 of class 'MyApp.Requests' does not implement methodSignatureForSelector: -- trouble ahead

Unrecognized selector -[MyApp.Requests checkReq:]

我的代码简化如下:

var timer: NSTimer?

    func parseUberRequest(dict: NSDictionary) {
        if let reqId = dict["request_id"] as? String {
            timer = NSTimer.scheduledTimerWithTimeInterval(5, target: self, selector: "checkReq:", userInfo: ["reqId" : reqId], repeats: false)
        }
    }

    func checkReq(timer: NSTimer) {
        let userInfo = timer.userInfo as! Dictionary<String, String>
        if let reqId = userInfo["reqId"] {
            println(reqId)
        }

    }

请知道我在本网站上查看了同样错误的其他答案,并发现它们都是令人难以置信的过时答案。这是XCode 6.4和Swift 1.2。 Objective-C不涉及此处。

我也尝试过使用Selector(&#34; checkReq:&#34;)无济于事。

2 个答案:

答案 0 :(得分:1)

此代码所属的类(必须是类,而不是结构或枚举)必须从NSObject继承。

更严格地说,您在target: NSTimer.scheduledTimerWithTimeInterval参数中添加的任何一个类都必须从NSObject继承。在这种情况下,在另一种情况下恰好是self,可能不是。{/ p>

答案 1 :(得分:1)

Cocoa的目标选择器模式需要符合NSObject协议。

使您的类成为NSObject的子类