Быстрый поиск пользователей из нескольких источников

У меня есть требование для поиска пользователей QuickBlox, чьи идентификаторы соответствуют их

  • Идентификаторы Facebook или
  • Идентификаторы Twitter или
  • Идентификаторы входа

Поэтому я запускаю несколько запросов QBUser одновременно, используя следующий код:

[QBUsers usersWithLogins:[NSArray arrayWithObject:m_searchString] delegate:self];
[QBUsers usersWithFacebookIDs:[NSArray arrayWithObject:m_searchString] delegate:self];
[QBUsers usersWithTwitterIDs:[NSArray arrayWithObject:m_searchString] delegate:self];

Так, например, если я задаю строку поиска как "Testuser" - она ​​должна искать всех пользователей, имеющих login = Testuser, FB login = Testuser и Twitter login = Testuser.

Исходя из источника запроса (FB/Twitter/ Мое собственное приложение), мне нужно поместить результаты в разные части пользовательского интерфейса.

Проблема в том, что я не могу определить, какой результат возвращается для какого запроса.

-(void)completedWithResult:(Result*)result
{
    [self showActivityIndicator:NO];
    // QuickBlox User creation result
    if([result isKindOfClass:[QBUUserPagedResult class]])
    {
        // Success result
        if(result.success)
        {
        }
    }
}

Я вижу, что приведенный выше код ударил 3 раза. Но я ничего не вижу в QBUUserPagedResult класс, который говорит мне, из какого запроса пришел этот результат.

Что-то вроде тега для запроса должно быть достаточно, но я не уверен, что это такое, глядя на документацию.

  • Есть ли что-нибудь, что я могу использовать?

  • С другой стороны, есть ли другой подход к тому, что я пытаюсь достичь (вместо нескольких запросов)?

1 ответ

Решение

Я понял, что опция контекста, которая представляет собой NSString, работает как тег для каждого запроса Quickblox:

[QBUsers usersWithLogins:[NSArray arrayWithObject:m_searchString] delegate:self context:MY_STRING_CONSTANT];

Тогда в функции делегата:

- (void)completedWithResult:(Result *)result context:(void *)contextInfo
{  
    if(result.success && [result isKindOfClass:QBUUserPagedResult.class])
    {                
        NSString * _context = (__bridge NSString *) contextInfo;            
        if([_context isEqualToString:MY_STRING_CONSTANT])
        {
        }
    }
}

Это так просто, но документация не говорит об этом, или она не видна, как должно быть. Я должен был копаться в их форумах, чтобы понять это.

Другие вопросы по тегам