У меня небольшая проблема. Когда я регистрирую пользователя в первый раз, пользователь ищет карточки, используя следующий код
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