Быстрый поиск пользователей из нескольких источников
У меня есть требование для поиска пользователей 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])
{
}
}
}
Это так просто, но документация не говорит об этом, или она не видна, как должно быть. Я должен был копаться в их форумах, чтобы понять это.