2017-09-24 91 views
0

我使用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,因为我认为它超出了范围。

是什么导致了这个问题,我该如何解决它?

+0

1.将诊断添加到Q,而不是诊断描述。 –

+0

没错,我编辑了我的帖子。 – da1lbi3

回答

1

尝试追加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) 
} 
相关问题