5

新しいユーザーが XMPP に登録するときに問題が発生します。vCard にニックネームを設定できませんが、ユーザーの vCard が既に存在する場合、同じコードで問題なく動作します。

dispatch_queue_t queue = dispatch_queue_create("queue", DISPATCH_QUEUE_PRIORITY_DEFAULT);
dispatch_async(queue, ^{

    XMPPvCardCoreDataStorage *xmppvCardStorage = [XMPPvCardCoreDataStorage sharedInstance];
    XMPPvCardTempModule *xmppvCardTempModule = [[XMPPvCardTempModule alloc] initWithvCardStorage:xmppvCardStorage];
    [xmppvCardTempModule  activate:[self xmppStream]];

    XMPPvCardTemp *myVcardTemp = [xmppvCardTempModule myvCardTemp];

    if (myVcardTemp == nil) {
       // I am stuck here, unable to create empty VCard for new User
    }
    else {
        [myVcardTemp setNickname:@"iphone"];
        [xmppvCardTempModule updateMyvCardTemp:myVcardTemp];
    }

});

xmpp で初めて vcard を作成する手がかりはありますか?

4

2 に答える 2

6
XMPPvCardTemp *myvCardTemp = [xmppvCardTempModule myvCardTemp];
if (!myvCardTemp) 
{
    NSXMLElement *vCardXML = [NSXMLElement elementWithName:@"vCard" xmlns:@"vcard-temp"];
    XMPPvCardTemp *newvCardTemp = [XMPPvCardTemp vCardTempFromElement:vCardXML];
    [newvCardTemp setNickname:@"nick"];
    [xmppvCardTempModule updateMyvCardTemp:newvCardTemp];
}
else
{
    //Set Values as normal
}
于 2013-10-08T14:05:17.327 に答える
0

私は次のコードを使用しましたが、カードを作成していないようです。ブロックの場合は常に入ります。何か不足している場合は見てください。

     XMPPvCardTemp *myvCardTemp = [xmppvCardTempModule myvCardTemp];
    [xmppvCardTempModule  activate:[self xmppStream]];
if (!myvCardTemp)
{
    NSXMLElement *vCardXML = [NSXMLElement elementWithName:@"vCard" xmlns:@"vcard-temp"];
    XMPPvCardTemp *newvCardTemp =[XMPPvCardTemp vCardTempFromElement:vCardXML];

    [newvCardTemp setNickname:@"exist"];
    [xmppvCardTempModule updateMyvCardTemp:newvCardTemp];
    NSLog(@"no");
}
else
{
    NSLog(@"yes");

    //Set Values as normal
    [myvCardTemp setNickname:@"new"];
    [xmppvCardTempModule updateMyvCardTemp:myvCardTemp];

}
于 2014-01-24T05:44:20.573 に答える