【问题标题】:Ambiguous use of 'dispatch_get_main_queue()' - XMPP'dispatch_get_main_queue()' 的模糊使用 - XMPP
【发布时间】:2019-05-26 19:48:16
【问题描述】:

我正在使用 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

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

【问题讨论】:

    标签: swift chat ejabberd xmppframework


    【解决方案1】:

    新语法是DispatchQueue.main,或者如果上下文需要DispatchQueue,则只是.main。因此:

    stream.addDelegate(self, delegateQueue: .main)
    

    【讨论】:

    • 我已经试过了,但它没有调用委托方法
    • 好的,但这不是你抱怨的帖子。如果您遇到的问题与编译时错误不同,则需要发布实际问题的详细信息。
    【解决方案2】:

    您可以使用以下语法:

    stream.addDelegate(self, delegateQueue: .main)
    

    但在 xmpp 中,您应该需要以 swift4 语法更新委托方法。他们只提供 swift 3 格式。

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

    【讨论】:

      猜你喜欢
      • 2019-09-10
      • 2016-09-13
      • 2012-09-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多