出于某种原因,我无法使用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选择器冲突。
答案 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中实现。