在Swift4中将获取的XMPPframeWork vCard保存到CoreData中

时间:2018-08-11 07:05:09

标签: ios swift4 xmppframework vcard

我能够使用此代码创建和更新vCard

    let xmppvCardStorage = XMPPvCardCoreDataStorage.sharedInstance()
    let xmppvCardTempModule = XMPPvCardTempModule.init(vCardStorage:xmppvCardStorage!)
    xmppvCardTempModule.activate(self.stream)
    xmppvCardTempModule.addDelegate(self, delegateQueue: DispatchQueue.main)
    let vCard = DDXMLElement(name: "vCard", xmlns: "vcard-temp")
    let vCardTemp = XMPPvCardTemp.vCardTemp(from: vCard)
    vCardTemp.nickname = "john"
    vCardTemp.jid = XMPPJID(string: "john123@www.example.com")

我还可以使用以下代码来获取该vCard:

    let xmppvCardStorage = XMPPvCardCoreDataStorage.sharedInstance()
    let xmppvCardTempModule = XMPPvCardTempModule.init(vCardStorage: xmppvCardStorage!)
    xmppvCardTempModule.activate(self.stream)
    let jID = XMPPJID(string: "john@www.example.com")
    xmppvCardTempModule.addDelegate(self,delegateQueue:DispatchQueue.main)
    xmppvCardTempModule.fetchvCardTemp(for: jID!, ignoreStorage:false)

如您所见,我正在从服务器中获取vCard。这是通过将ignoreStorage设置为false

来完成的

我的问题是XMPPFrameWork是否支持一种将检索到的vCard存储在CoreData中的方法,这样我就不必每次都检索它

1 个答案:

答案 0 :(得分:1)

fetchvCardTemp只是简单地获取给定JID的vCardTemp(如果它不在存储中)。当您将ignoreStorage设置为false时,您说的是我不想使用存储,并且我想通过XMPPStream获取它。 您应该只使用xmppvCardStorage及其功能之一vCardTempForJID,只需传递您喜欢的jID并将其返回给您