OpenTok/TokBox 的 Swift 协议一致性错误
Posted
技术标签:
【中文标题】OpenTok/TokBox 的 Swift 协议一致性错误【英文标题】:Swift Protocol Conformance Error for OpenTok/TokBox 【发布时间】:2015-03-19 17:29:31 【问题描述】:我试图将 OpenTok getting startedobjective-c 代码翻译成 swift 并且在协议一致性方面出现错误,尽管符合协议。只有在我的类定义中存在OTPublisherDelegate
协议才会创建发生错误的场景。
错误信息是:
ViewController 类型不符合协议'OTPublisherKitDelegate'
但是,至少据我所知,我已经实现了 OTPublisherKitDelegate 中的所有方法。
这是示例代码(为简洁起见,使用空方法)
import UIKit
import OpenTok
class ViewController: UIViewController, OTSessionDelegate, OTSubscriberKitDelegate, OTPublisherDelegate
//MARK:OTSessionDelegate implementation
func sessionDidConnect(session: OTSession!)
func sessionDidDisconnect(session: OTSession!)
func session(session: OTSession!, didFailWithError error: OTError!)
func session(session: OTSession!, streamCreated stream: OTStream!)
func session(session: OTSession!, streamDestroyed stream: OTStream!)
//MARK:OTSubscriberKidDelegate implementation
func subscriberDidConnectToStream(subscriber: OTSubscriberKit!)
func subscriber(subscriber: OTSubscriberKit!, didFailWithError error: OTError!)
//MARK:OTPublisherDelegate implementation
func publisher(publisher: OTPublisherKit!, streamCreated stream: OTStream!)
func publisher(publisher: OTPublisherKit!, streamDestroyed stream: OTStream!)
func publisher(publisher: OTPublisherKit!, didFailWithError: OTStream!)
如果我从项目编译的继承协议列表中删除了OTPublisherDelegate
。不幸的是,我无法使用 OpenTok 文档(这是很好的文档)找到解决方案。
OpenTok 依赖项通过 CocoaPods 进行管理,并且正在为 OpenTok 库中的所有其他协议进行编译。
【问题讨论】:
【参考方案1】:当然,我是在发帖后才知道的。
问题在于这个方法签名
func publisher(publisher: OTPublisherKit!, didFailWithError: OTError!)
我忘记了 Swift 的方法签名不仅必须遵循相同的参数类型和顺序,而且还必须遵循参数的外部和内部名称。就我而言,我忘记了第二个参数的内部参数名称。
正确的方法签名如下所示:
func publisher(publisher: OTPublisherKit!, didFailWithError error: OTError!)
我 -> 掌心
【讨论】:
感谢您发布此信息!我有同样的问题。顺便说一句,在您的解决方案中,您不小心遇到错误:OTStream!应该是错误:OTError!。 谢谢杰里米。我修好了。以上是关于OpenTok/TokBox 的 Swift 协议一致性错误的主要内容,如果未能解决你的问题,请参考以下文章