JSQMessages不能覆盖方法Swift 3

时间:2017-05-09 02:54:58

标签: ios swift jsqmessagesviewcontroller

出于某种原因,我无法使用JSQMessages覆盖Swift 3中的方法。

这些方法在JSQMessagesCollectionViewDataSource

中定义

public func senderDisplayName() -> String!

public func senderId() -> String!

当我继承JSQMessagesViewController时,我尝试实现这样的方法:

override func senderId() -> String {
    return User.Wozniak.rawValue
}

override public func senderDisplayName() -> String! {
    return getName(.Wozniak)
}

但是我得到的错误是它没有覆盖超类中的任何方法。当我删除覆盖时,它说它与Obj-C选择器冲突。

2 个答案:

答案 0 :(得分:1)

我已在swift 3中使用以下属性

实现了此功能
self.senderId = "my ID"
self.senderDisplayName = "Wozniac"

答案 1 :(得分:0)

您可以尝试这样做:

open override func senderId() -> String {
    ...
}

但我不确定它是否能完全解决您的问题。

根据引入open关键字的 SE-0117: Allow distinguishing between public access and public overridability ,导入的Objective-C代码的规则是(强调我的):

  

Objective-C类和方法始终以打开导入。这意味着Objective-C类的合成标头将在其界面中普遍用 open 替换 public

当然,假设JSQMessages仍在纯Objective-C中实现。