В зависимости от того, как настроен API, вы можете сделать один запрос, чтобы получить список кавычек (IE - массив/словарь цитируемых идентификаторов и т. Д.). Оттуда вы можете просмотреть все полученные вами коды и выполнить конкретный запрос, чтобы получить каждую цитату с помощью свойства идентификатора кавычек.
Без описания API почти невозможно дать вам точный ответ, но то, что я только что описал, является общим подходом к этим типам проблем.
1) Сделайте запрос, чтобы получить список котировок (только их первичный ключ/уникальные идентификаторы)
2) Loop через все идентификаторы из предыдущего запроса и сделать конкретный запрос, чтобы получить цитату, что Я бы.
Использование библиотеки AFNetworking будет выглядеть примерно так. Имейте в виду, что запросы обрабатываются в другом потоке, поэтому вы можете настроить NSNotification, чтобы отслеживать, когда вы закончите получать каждую отдельную цитату и/или отслеживать общее количество кавычек (внешний цикл) и текущий индивидуальный Цитата, которую вы запрашиваете (внутренний цикл). Сравнивая эти два счета, вы можете узнать, когда закончите.
NSMutableArray *allQuotes = [[NSMutableArray alloc] init];
AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager];
NSString *url = @"www.whatever.com/api/quotes";
[manager GET:url parameters:nil success:^(AFHTTPRequestOperation *operation, id responseObject) {
NSArray *quoteList = (NSArray *)responseObject;
for(NSString *quoteID in quoteList)
{
[manager GET:url parameters:@{@"quoteID":quoteID} success:^(AFHTTPRequestOperation *operation, id responseObject) {
[allQuotes addObject:responseObject];
[NSNotificationCenter defaultCenter] postNotificationName:@"FINISHED_GETTING_QUOTE" object:allQuotes];
} failure:^(AFHTTPRequestOperation *operation, NSError *error) {
//Handle failure here...
}];
}
} failure:^(AFHTTPRequestOperation *operation, NSError *error) {
//Handle failure here...
}];
-(void)finishedGettingQuotes:(NSNotification *)notification
{
if(currentRequest == totalRequests)
{
NSMutableArray *temp = notification.object;
}
}
Извините за не размещение деталей в ОП. API позволяет только извлекать 1 случайную цитату за звонок. Я пошел вперед и настроил цикл для повторного запуска метода, основываясь на некоторых других деталях приложения, которые будут устанавливать int для количества раз. Что было бы лучшим способом объединить все возвращенные кавычки вместе в один массив или строку? – user717452
Я бы установил глобальный NSMutableArray как свойство. Это можно сделать в .h, добавив «@property (неатомный, сильный) NSMutableArray * allQuotes» (без кавычек obv). Каждый раз, когда запрос на получение цитаты закончил, просто добавьте возвращенный NSString в этот глобальный массив, выполнив «[allQuotes addObject: newString]» – anders
В вашем примере здесь, как бы я сказал, сколько раз перебирать запрос , скажем, чтобы получить 5 случайных котировок? – user717452