title: XMPPIQ doesn't set vCard tag in the vCard
body: <p>I am trying to retrieve vCards for few JIDs, including the current user. I initialized and activated <code>XMPPvCardTempModule</code> using following code - </p>
  
  <pre><code>_xmppvCardStorage = [XMPPvCardCoreDataStorage sharedInstance];
  _xmppvCardTempModule = [[XMPPvCardTempModule alloc] initWithvCardStorage:self.xmppvCardStorage];
  _xmppvCardAvatarModule = [[XMPPvCardAvatarModule alloc] initWithvCardTempModule:self.xmppvCardTempModule];
  [self.xmppvCardTempModule           activate:self.xmppStream];
  [self.xmppvCardAvatarModule         activate:self.xmppStream];
  [self.xmppvCardAvatarModule addDelegate:self delegateQueue:dispatch_get_main_queue()];
  [self.xmppvCardTempModule addDelegate:self delegateQueue:dispatch_get_main_queue()];
  </code></pre>
  
  <p>And then I implemented the following delegate methods -</p>
  
  <pre><code>- (void)xmppvCardTempModule:(XMPPvCardTempModule *)vCardTempModule
          didReceivevCardTemp:(XMPPvCardTemp *)vCardTemp
                       forJID:(XMPPJID *)jid{
      DDLogDebug(@"Received vCard for %@ \n vCard:%@",jid.full,vCardTemp.XMLString);
      ContactCore* contact = [appDelegate.coreDataController findContact:jid.user];
      contact.vCard = vCardTemp;
      [appDelegate.dataController postContactUpdateNotification:contact];
  }
  - (void)xmppvCardTempModuleDidUpdateMyvCard:(XMPPvCardTempModule *)vCardTempModule{
      [self.selfContact setVCard:vCardTempModule.myvCardTemp];
  }
  - (void)xmppvCardTempModule:(XMPPvCardTempModule *)vCardTempModule failedToUpdateMyvCard:(DDXMLElement *)error{
      DDLogDebug(@"failedToUpdateMyvCard Error: %@",error.XMLString);
  }
  
  -(void)xmppvCardAvatarModule:(XMPPvCardAvatarModule *)vCardTempModule didReceivePhoto:(UIImage *)photo forJID:(XMPPJID *)jid{
      ContactCore* contact = [appDelegate.coreDataController findContact:jid.user];
  }
  </code></pre>
  
  <p>The problem is that none of these delegate methods ever gets called. I can see the vCard output in the Log data which means that the vCards are getting fetched properly. So I implemented <code>didReceiveIQ</code> to get the vCards directly from the source, using the following code - </p>
  
  <pre><code>- (BOOL)xmppStream:(XMPPStream*)sender didReceiveIQ:(XMPPIQ *)iq{
      XMPPvCardTemp *vCard = [XMPPvCardTemp vCardTempSubElementFromIQ:iq];
      if(vCard){
          ContactCore* contact = [appDelegate.coreDataController findContact:iq.from.user];
          contact.vCard = vCard;
      }
      return NO;
  }
  </code></pre>
  
  <p>But the <code>vCard</code> never gets initialized. I checked the IQs and I was receiving them properly. Then I checked the whole XML properly and found out that the <code>vCard</code> tag was absent and it was replaced with the actual name of the contact. For example this is what I was getting for one of the contact - </p>
  
  <pre><code>&lt;iq
      xmlns="jabber:client" from="xxx@xxx.com" to="xxx@xxx.com/xxx" id="12345" type="result"&gt;
      &lt;Abhi
          xmlns="vcard-temp" prodid="-//HandGen//NONSGML vGen v1.0//EN" version="2.0"&gt;
          &lt;PHOTO&gt;
              &lt;TYPE&gt;image/jpeg&lt;/TYPE&gt;
              &lt;BINVAL&gt;&lt;!--A long Base64 code--&gt;&lt;/BINVAL&gt;
          &lt;/PHOTO&gt;
      &lt;/Abhi&gt;
  &lt;/iq&gt;
  </code></pre>
  
  <p>The tag <code>&lt;Abhi&gt;</code> should be <code>&lt;vCard&gt;</code> for the <code>vCardTempSubElementFromIQ</code> method to identify it as a <code>vCard</code>. I want to know if it's a normal behavior or is there something I am doing wrong here? If it's something I am doing wrong, what should be the correct way to do it?</p>