对扩展名成员的歧义引用
问题描述:
我使用TokBox api。我想使用信号方法。但是我得到了成员'会话'错误的歧义引用。对扩展名成员的歧义引用
这是代码:
import UIKit
import OpenTok
import Firebase
import FontAwesome_swift
class CallView: UIViewController {
private var session: OTSession?
private var publisher : CustomPublisher?
override func viewDidLoad() {
super.viewDidLoad()
//connect to the session
connectToAnOpenTokSession()
}
func connectToAnOpenTokSession() {
session = OTSession(apiKey: "xxx", sessionId: "xxx", delegate: self)
var error: OTError?
session?.connect(withToken: "xxx", error: &error)
if error != nil {
print(error!)
}
}
}
extension CallView: OTSessionDelegate {
func sessionDidConnect(_ session: OTSession) {
print("The client connected to the OpenTok session.")
var error: OTError? = nil
defer {
print(error.debugDescription)
}
}
func chat(){
var error: OTError? = nil
try? session!.signal(withType: "chat", string: "bla", connection: nil)
if error != nil {
print("Signal error: \(error)")
}
else {
print("Signal sent: ")
}
}
func sessionDidDisconnect(_ session: OTSession) {
print("The client disconnected from the OpenTok session.")
}
func session(_ session: OTSession, didFailWithError error: OTError) {
print("The client failed to connect to the OpenTok session: \(error).")
}
func session(_ session: OTSession, streamCreated stream: OTStream) {
print("A stream was created in the session.")
}
func session(_ session: OTSession, streamDestroyed stream: OTStream) {
print("A stream was destroyed in the session.")
}
}
extension CallView: OTPublisherDelegate {
func publisher(_ publisher: OTPublisherKit, didFailWithError error: OTError) {
print("The publisher failed: \(error)")
}
}
我有chat()
方法。但是我得到了歧义参考成员错误在这一行:
试试吗? session!.signal(withType:“chat”,string:“bla”,连接:无)
我不知道如何解决它。我试过welf.session
,因为我认为它超出了范围。
是什么导致了这个问题,我该如何解决它?
答
尝试追加OTError
实例到函数的参数。
此外,避免使用强力解开和未处理的错误捕捉。
guard let tokSession = session else {
return
}
do {
var error: OTError? = nil
try tokSession.signal(withType: "chat", string: "bla", connection: nil, error: error)
if error != nil {
print("Signal error: \(error)")
} else {
print("Signal sent: ")
}
} catch let error {
print(error.localizedDescription)
}
1.将诊断添加到Q,而不是诊断描述。 –
没错,我编辑了我的帖子。 – da1lbi3