XMPPFramework:尝试更新VCard上的昵称

这个问题和它的标题一样简单:我试图更新他的VCard上的用户昵称,但是我不能。 我正在使用这个代码:

dispatch_queue_t queue = dispatch_queue_create("queue", DISPATCH_QUEUE_PRIORITY_DEFAULT); dispatch_async(queue, ^{ XMPPvCardTemp *myVcardTemp = [[[self appDelegate] xmppvCardTempModule] myvCardTemp]; [myVcardTemp setNickname:@"a_nickname"]; [[[self appDelegate] xmppvCardTempModule] updateMyvCardTemp:myVcardTemp]; }); 

我无法想象为什么这段代码不想在同一件作品上工作,而是更新照片,就像是一种魅力:

 NSData *imageData = UIImagePNGRepresentation(anImage); dispatch_queue_t queue = dispatch_queue_create("queue", DISPATCH_QUEUE_PRIORITY_DEFAULT); dispatch_async(queue, ^{ XMPPvCardTemp *myVcardTemp = [[[self appDelegate] xmppvCardTempModule] myvCardTemp]; [myVcardTemp setPhoto:imageData]; [[[self appDelegate] xmppvCardTempModule] updateMyvCardTemp:myVcardTemp]; }); 

任何帮助将不胜感激…这是让我疯狂

注意:我使用OpenFire作为XMPP服务器

当我试图更新昵称时,这是服务器返回的节

 RECV: <iq xmlns="jabber:client" type="result" from="7db55e68-cb18-4826-befd-0eb9269637aa@000.000.000.000" to="7db55e68-cb18-4826-befd-0eb9269637aa@000.000.000.000/2cfc4f88"><chat_jorges xmlns="vcard-temp"><NICKNAME>chat_jorges</NICKNAME></chat_jorges></iq> 

(我改变了我的服务器的IP为000.000.000.000)

编辑:我完全错误不读这个

实际上,当我读到XMPP的源代码时,我想知道它是如何设定价值的。 在XMPPvCardTempBase.h中:

 #define XMPP_VCARD_SET_STRING_CHILD(Value, Name) NSXMLElement *elem = [self elementForName:(Name)]; //it looks like a get and not a set?? 

在XMPPvCardTemp.m中:

 - (void)setNickname:(NSString *)nick { XMPP_VCARD_SET_STRING_CHILD(nick, @"NICKNAME"); } 

也许有一些KVC的地方…你可以尝试在源代码中的这个:

  - (void)setNickname:(NSString *)nick { XMPP_VCARD_SET_STRING_CHILD(nick, @"NICKNAME") = nick ; }