Swift 覆盖方法 didPressSend

Swift override method didPressSend

我正在使用 Swift 3.0 和 Xcode 8.0 以及 JSQMessages 7.3.4。

我正在尝试实现 JSQMessagesViewController,具体来说,我正在尝试覆盖 didPressSend 函数,但它一直抱怨该方法没有覆盖其超类中的任何方法。

override func didPressSend(_ button: UIButton, withMessageText text: String, senderId: String, senderDisplayName: String, date: Date) {
    print("working")
}

想知道为什么会这样吗?

它还抱怨方法不能是@obj 覆盖,因为参数 5 的类型不能在 Objective-C.

中表示

您可以通过键入 override func didpress 然后接受建议的完成来更正错误。在那里你会看到有一些细微的差别,最显着的是强制展开的可选值:

override func didPressSend(_ button: UIButton!, 
               withMessageText text: String!, 
                           senderId: String!, 
                  senderDisplayName: String!, 
                               date: Date!) {
    print("works")
}
override func didPressSend(_ button: UIButton?, withMessageText text: String?, senderId: String?, senderDisplayName: String?, date: Date?) {
    // Check to make sure we are sending something no need for blank messages.
    guard let text = text else {
        return
    }
    print("working")
    // add logic here.
}

在那里练习安全代码。