我有一个小问题,当我第一次注册用户时,该用户使用以下代码查找电子名片
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 searchUsername
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)
}
}
问题是,如果我是首次注册用户,并且请求vcard,我收不到正确的结果(我确定有些用户没有vcard,尽管我确定这些用户有vcard。我可以再次检查我的后端。)当我退出并再次登录并查找相同的vcard时,我得到了正确的结果。最后,当我第一次注册时检查委托方法
func xmppvCardTempModule(_ vCardTempModule: XMPPvCardTempModule, didReceivevCardTemp vCardTemp:
XMPPvCardTemp, for jid: XMPPJID) {
print(vCardTemp.nickname)
}
我发现我多次收到同一个人的vcard超过500次。我的问题是,为什么我第一次注册时一开始会收到错误的vcard结果。错误的意思是,响应表明即使上传了vcard,也没有上传vcard