Haris
Haris

Reputation: 267

XMPPFramework - Nickname not updated if vCard is not already created

Problem comes when a new user registers with XMPP. I am unable to set nickname on vCard, however if vCard of a user already exists then same piece of code works fine.

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];
    }

});

Any clue for creating vcard for first time in xmpp?

Upvotes: 5

Views: 2235

Answers (2)

Satish
Satish

Reputation: 1012

I have used following code but seems its not creating card, it always go in if block, can you please looking to it if i am missing anything.

     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];

}

Upvotes: 0

Haris
Haris

Reputation: 1862

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
}

Upvotes: 6

Related Questions