多个iOS GET请求(动态请求数)

多个iOS GET请求(动态请求数),ios,xml,nsmutableurlrequest,Ios,Xml,Nsmutableurlrequest,我正在使用一个在线API来检索随机的名言。在我的代码中,我使用: NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:[NSURL URLWithString:urloftheapi] cachePolicy:NSURLRequestReloadIgnoringLocalAndRemoteCache

我正在使用一个在线API来检索随机的名言。在我的代码中,我使用:

NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:[NSURL URLWithString:urloftheapi]
                                                           cachePolicy:NSURLRequestReloadIgnoringLocalAndRemoteCacheData timeoutInterval:60];
    [request setHTTPMethod:@"GET"];


    NSURLConnection *connection = [[NSURLConnection alloc] initWithRequest:request delegate:self];
    [connection start];
    [connection release];

然而,我希望它可能不止一个引用。该API不包含用于多个引号的函数,因此我需要运行多个
NSMutableURLRequest
,才能获得全部内容。然而,由于它可能是一个请求,也可能是多个请求,所以我不确定在代码中实现这一点的最佳方法。想法?

根据API的设置方式,您可以执行一个请求来获取引号列表(即引号的数组/字典等)。从那里,您可以循环使用所有quoteID,并通过quotes ID属性执行特定请求以获取每个quote

如果没有对API的描述,几乎不可能给出准确的答案,但我刚才描述的是解决这些问题的一般方法

1) 请求获取报价列表(仅其主键/唯一id)

2) 循环检查前一个请求中的所有id,并发出一个特定的请求,以通过哪个id获取报价

使用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...
}];


抱歉没有在OP中发布详细信息。API只允许检索每个调用的1个随机报价。我继续设置了一个循环来反复运行这个方法,基于应用程序的一些其他细节,这些细节将设置整数的次数。将所有返回的引号循环到一个数组或字符串中的最佳方法是什么?我将设置一个全局NSMutableArray作为属性。这可以通过在.h中添加“@property(nonatomic,strong)NSMutableArray*allQuotes”(不带引号obv)来实现。每次获取报价的请求完成后,只需通过在您的示例中执行“[allQuotes addObject:newString]”将返回的NSString附加到该全局数组中,我如何告诉它循环请求多少次,比如获得5个随机报价?
-(void)finishedGettingQuotes:(NSNotification *)notification
{
   if(currentRequest == totalRequests)
   {
      NSMutableArray *temp = notification.object;
   }
}