这个问题就像标题所说的那样简单:我正在尝试更新他的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)
答案 0 :(得分:0)
编辑:我完全错了,请不要阅读
实际上,当我阅读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 ;
}