我使用在线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
才能完成所有操作。但是,由于它可能是1个请求,可能是几个,我不确定在代码中实现它的最佳方法。想法?
答案 0 :(得分:1)
根据API的设置方式,您可以执行一个请求以获取引号列表(IE是一个引用ID的数组/字典等)。从那里你可以遍历你得到的所有quoteID,并做一个特定的请求,用引号ID属性得到每个报价。
如果没有对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...
}];
-(void)finishedGettingQuotes:(NSNotification *)notification
{
if(currentRequest == totalRequests)
{
NSMutableArray *temp = notification.object;
}
}