歧义使用“ dispatch_get_main_queue()”-XMPP

时间:2018-12-29 08:01:31

标签: swift chat ejabberd xmppframework

我正在使用XMPP进行具有聊天活动的项目。我正在使用以下代码来生成它,

 var stream:XMPPStream!

 let xmppRosterStorage = XMPPRosterCoreDataStorage()
 var xmppRoster: XMPPRoster!

  override func viewDidLoad() {
    super.viewDidLoad()

    xmppRoster = XMPPRoster(rosterStorage: xmppRosterStorage)

    stream = XMPPStream()
    stream.addDelegate(self, delegateQueue: dispatch_get_main_queue())

    xmppRoster.activate(stream)

    let button = UIButton()
    button.backgroundColor = UIColor.red
    button.setTitle("SendMessage", for: .normal)
    button.frame = CGRect(x: 90, y: 100, width: 300, height: 40)//CGRect(90, 100, 300, 40)
    button.addTarget(self, action: #selector(self.sendMessage), for: .touchUpInside)

    self.view.addSubview(button)
    stream.myJID = XMPPJID(string: "test@localhost")

    do {
       try stream.connect(withTimeout: 30)
    }
    catch {
       print("error occured in connecting")
    }

    }

我参考了this教程。  但我在下一行中遇到了问题

stream.addDelegate(self, delegateQueue: dispatch_get_main_queue())

问题是

  

歧义使用'dispatch_get_main_queue()'

主要是我正在使用 Swift4.2

任何人都请帮助我找出解决方案。谢谢...

2 个答案:

答案 0 :(得分:3)

新语法为DispatchQueue.main,如果上下文需要.main,则仅为DispatchQueue。因此:

stream.addDelegate(self, delegateQueue: .main)

答案 1 :(得分:1)

您可以使用以下语法:

stream.addDelegate(self, delegateQueue: .main)

但是在xmpp中,您应该需要使用swift4语法更新委托方法。它们仅提供快速3格式。

更改最新的xmpp委托方法后,一切对我来说都很好...