为什么 XMPP 函数 returns 什么都没有?
Why XMPP function returns nothing?
我在文档中找到了这个:
<iq type='get' id='2'>
<query xmlns='jabber:iq:roster'/>
</iq>
并在Swift中写为:
public class func getGroups() {
var xmppStream: XMPPStream?
let iq: DDXMLElement = DDXMLElement.elementWithName("iq") as! DDXMLElement
iq.addAttributeWithName("type", stringValue: "get")
iq.addAttributeWithName("id", stringValue: "2")
let query: DDXMLElement = DDXMLElement(name: "query", xmlns: "jabber:iq:roster") as! DDXMLElement
iq.addChild(query)
xmppStream?.sendElement(iq)
}
当我 运行 它来自我的 ViewController 时:
override func viewDidLoad(animated: Bool) {
print("Group list: \(getGroups())")
}
它returns我是空值,只是Group list:
。
我的问题是,我怎样才能 运行 我的功能正常并得到结果,因为当我 运行 我的服务器中的 XMPP <iq>
片段时,它 returns 我的价值。
更新
您甚至可以在 Objective C
中编写或更正我的代码
更新
extension OneRoster: XMPPStreamDelegate {
public func xmppStream(sender: XMPPStream, didReceiveIQ ip: XMPPIQ) -> Bool {
return false
}
}
xmppStream?.sendElement(iq)
就像你向服务器发出的请求,所以它不会是即时的。
您需要等待像 'didReceiveIQ:' 这样的委托被调用,然后您会得到响应。
挖掘这个委托,我相信你将能够按预期获得数据。
您正在尝试重新发明与 XMPPFramework
捆绑在一起的 XMPPRoster
模块:只需在您的 XMPPStream 实例上实例化它和 activate
,它就会自动同步您的花名册和组。 iPhoneXMPP
示例向您显示此模块支持的组的花名册。
我在文档中找到了这个:
<iq type='get' id='2'>
<query xmlns='jabber:iq:roster'/>
</iq>
并在Swift中写为:
public class func getGroups() {
var xmppStream: XMPPStream?
let iq: DDXMLElement = DDXMLElement.elementWithName("iq") as! DDXMLElement
iq.addAttributeWithName("type", stringValue: "get")
iq.addAttributeWithName("id", stringValue: "2")
let query: DDXMLElement = DDXMLElement(name: "query", xmlns: "jabber:iq:roster") as! DDXMLElement
iq.addChild(query)
xmppStream?.sendElement(iq)
}
当我 运行 它来自我的 ViewController 时:
override func viewDidLoad(animated: Bool) {
print("Group list: \(getGroups())")
}
它returns我是空值,只是Group list:
。
我的问题是,我怎样才能 运行 我的功能正常并得到结果,因为当我 运行 我的服务器中的 XMPP <iq>
片段时,它 returns 我的价值。
更新 您甚至可以在 Objective C
中编写或更正我的代码更新
extension OneRoster: XMPPStreamDelegate {
public func xmppStream(sender: XMPPStream, didReceiveIQ ip: XMPPIQ) -> Bool {
return false
}
}
xmppStream?.sendElement(iq)
就像你向服务器发出的请求,所以它不会是即时的。 您需要等待像 'didReceiveIQ:' 这样的委托被调用,然后您会得到响应。
挖掘这个委托,我相信你将能够按预期获得数据。
您正在尝试重新发明与 XMPPFramework
捆绑在一起的 XMPPRoster
模块:只需在您的 XMPPStream 实例上实例化它和 activate
,它就会自动同步您的花名册和组。 iPhoneXMPP
示例向您显示此模块支持的组的花名册。