2016-09-19 5 views
1

В настоящее время я работаю на основе чата. Я успешно загружаю свое фото профиля. Может ли кто-нибудь предложить мне, как получить список моих друзей, изображение профиля и статус. Я попытался под кодом. Я использую XMPP Framework для чата.Может ли кто-нибудь предложить мне, как получить список друзей? Профильное изображение и статус

Этот код retriving собственную Prifile картину

xmppvCardStorage = [XMPPvCardCoreDataStorage sharedInstance]; 
xmppvCardTempModule= [[XMPPvCardTempModule alloc] initWithvCardStorage:xmppvCardStorage]; 

XMPPvCardAvatarModule *xmppvCardAvatarModule = [[XMPPvCardAvatarModule alloc] initWithvCardTempModule:xmppvCardTempModule]; 

XMPPJID *jid = [XMPPJID jidWithString:[NSString stringWithFormat:@"%@@localhost",str]]; 
NSData *avtarData = [xmppvCardAvatarModule photoDataForJID:jid]; 

    **This code for Upload my own Prifile picture** 

NSXMLElement *vCardXML = [NSXMLElement elementWithName:@"vCard" xmlns:@"vcard-temp"]; 
XMPPvCardTemp *newvCardTemp = [XMPPvCardTemp vCardTempFromElement:vCardXML]; 

[newvCardTemp setGivenName:@"gireesh"]; 
[newvCardTemp setSortString:@"Chanti"]; 


NSArray *arr1= [[NSUserDefaults standardUserDefaults]objectForKey:@"USER"]; 
[[NSUserDefaults standardUserDefaults]synchronize]; 
DLog(@"user Profile %@",[arr1 objectAtIndex:0]); 
DLog(@"user Profile %@",[arr1 objectAtIndex:1]); 
NSString *str = [NSString stringWithFormat:@"%@%@",[arr1 objectAtIndex:1],[arr1 objectAtIndex:0]]; 




[newvCardTemp setJid:[XMPPJID jidWithString:[NSString stringWithFormat:@"%@@localhost",str]]]; 
[newvCardTemp setFormattedName:@""]; 
[newvCardTemp setEmailAddresses:[getdic valueForKey:@"emailid"]]; 


NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); 
NSString *documentsDirectory = [paths objectAtIndex:0]; 
NSString *imageFilePath = [documentsDirectory stringByAppendingPathComponent:@"Profileimage"]; 

UIImage* image1 = [UIImage imageWithContentsOfFile:imageFilePath]; 
NSData *imageData1 = UIImagePNGRepresentation(image1); 

[newvCardTemp setPhoto:imageData1]; 
[xmppvCardTempModule updateMyvCardTemp:newvCardTemp]; 
[xmppvCardTempModule activate:[self appDelegate].xmppStream]; 
[xmppvCardTempModule addDelegate:self delegateQueue:dispatch_get_main_queue()]; 

ответ

1

Fetch объект пользователя из XMPPUserCoreData, а затем использовать пользовательский объект, чтобы получить фотографию и имя списка пользователей.

Я использую этот код для извлечения пользователя. После того, как пользователь извлечен, вы можете использовать user.photo, чтобы получить изображение пользователя, user.displayName, чтобы получить имя пользователя и свойство раздела объекта NSFetchedResultsController, чтобы получить статус. Если раздел значение 0, то состояние: Available, если состояние 1: Away, еще Offline

- (NSFetchedResultsController *)fetchedResultsControllerContacts 
{ 
    if (fetchedUserLists == nil) 
    { 
     NSManagedObjectContext *moc = [[AppDelegate delegate] managedObjectContext_roster]; 

     NSEntityDescription *entity = [NSEntityDescription entityForName:@"XMPPUserCoreDataStorageObject" 
                inManagedObjectContext:moc]; 

     NSSortDescriptor *sd1 = [[NSSortDescriptor alloc] initWithKey:@"sectionNum" ascending:YES]; 
     NSSortDescriptor *sd2 = [[NSSortDescriptor alloc] initWithKey:@"displayName" ascending:YES]; 

     NSArray *sortDescriptors = [NSArray arrayWithObjects:sd1, sd2, nil]; 

     NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] init]; 
     [fetchRequest setEntity:entity]; 
     [fetchRequest setSortDescriptors:sortDescriptors]; 
     [fetchRequest setFetchBatchSize:10]; 

     fetchedUserLists = [[NSFetchedResultsController alloc] initWithFetchRequest:fetchRequest 
                      managedObjectContext:moc 
                      sectionNameKeyPath:@"sectionNum" 
                         cacheName:nil]; 
     [fetchedUserLists setDelegate:(id)self]; 
     NSError *error = nil; 
     if (![fetchedUserLists performFetch:&error]) 
     { 
      DDLogError(@"Error performing fetch: %@", error); 
     } 
    } 
    return fetchedUserLists; 
} 

Для получения количества секций -> Количество

NSArray *sections = [[self fetchedResultsControllerContacts] sections]; 

Для получения количества строк в одной секции в numberOfRowsInSection метод

if (section < [sections count]) 
{ 
    id <NSFetchedResultsSectionInfo> sectionInfo = [sections objectAtIndex:sectionIndex]; 
    return sectionInfo.numberOfObjects; 
} 

Для получения одного пользователя Внутри cellForRowAtIndexPath

XMPPUserCoreDataStorageObject *user = [[self fetchedResultsControllerContacts] objectAtIndexPath:indexPath]; 

Надеется, что это помогает. Счастливое кодирование ...

+0

Спасибо за быстрый Response.if (fetchedUserLists == ноль), что это, я не понимаю этого statement.Where вы получите от него –

+0

Это глобальный переменного типа «NSFetchedResultsController». Вы можете взять свой собственный – Janmenjaya

+0

Hi Can u, пожалуйста, дайте полный исходный код –

 Смежные вопросы

  • Нет связанных вопросов^_^