извлечение vCard возвращает неправильный результат, используя xmppframework - PullRequest
0 голосов
/ 05 ноября 2018

У меня небольшая проблема. Когда я регистрирую пользователя в первый раз, пользователь ищет карточки, используя следующий код

        let number = UserDefaults.standard.object(forKey: "phonenumbers") as? [String]
        for index in number!
        {
            let jID = XMPPJID(string: index + "@www.example.com")
            let statusFinal = XMPPTest.shared.searchUsername(username: jID!)
            if (statusFinal.0 == true)
            {
                print("JIDDD")
                print(index)
                XMPPTest.shared.addUserToRoster(username: jID!, nick: index)
                self.statusArray.append(true)
            }
            else
            {
                self.statusArray.append(false)
            }
        }

Имя пользователя func search следующее

  func searchUsername(username : XMPPJID) -> (Bool,UIImage?)
{


    let xmppvCardStorage = XMPPvCardCoreDataStorage.sharedInstance()
    let xmppvCardTempModule = XMPPvCardTempModule.init(vCardStorage: xmppvCardStorage!)
    xmppvCardTempModule.activate(self.stream)
    xmppvCardTempModule.addDelegate(self,delegateQueue:DispatchQueue.global(qos: .userInteractive))
    let vCard = xmppvCardTempModule.vCardTemp(for: username, shouldFetch: true)
    if (vCard?.stringValue != nil)
    {
        if !((vCard?.stringValue?.isEmpty)!)
        {

            if ((vCard?.photo) != nil)
            {
                let profilePic = vCard?.photo
                let image = UIImage(data: (profilePic!))
                return (true,image)
            }
            else
            {
                return (true,nil)
            }
        }
        else
        {return (false,nil)}
    }
    else
    {
        return (false,nil)
    }
}

Проблема в том, что если я регистрирую пользователя в первый раз и запрашиваю vcards, я не получаю правильные результаты (я получаю, что у некоторых пользователей нет vcards, хотя я уверен, что у этих пользователей есть vcard. Я могу дважды проверить мой бэкэнд.) Когда я выхожу и снова авторизируюсь и ищу те же открытки, я получаю правильные результаты. Наконец, когда я проверяю метод делегата при первой регистрации

 func xmppvCardTempModule(_ vCardTempModule: XMPPvCardTempModule, didReceivevCardTemp vCardTemp:
    XMPPvCardTemp, for jid: XMPPJID) {
    print(vCardTemp.nickname)


}

Я обнаружил, что получаю vcard для одного и того же человека несколько раз больше, чем 500 раз. У меня вопрос: почему я получаю неправильные результаты vcard при первой регистрации? Неправильно, я имею в виду, что ответ предполагает, что нет загруженной vcard, хотя есть загруженная vcard

...