发送多个 NSURLSession

Send multiple NSURLSession

我有一个看起来像这样的 NSURLSession,我想做的是,如果没有数据 returned 那么我希望它一次又一次地尝试,直到让说 8 秒或 3 次尝试,然后如果仍然没有任何内容,我将 return 没有数据。这是我现在拥有的,

NSURLSession *session = [NSURLSession sharedSession];
[[session dataTaskWithURL:[NSURL URLWithString:urlIn] completionHandler:^(NSData *data, NSURLResponse *response, NSError *error) {
// handle response
    //use my data
    // if no data I want to try again?


}] resume];

所以我希望它尝试 3 次或直到 8 秒过去。我该怎么做,

提前感谢您的帮助。

好的,我快完成了,我还有一点要用计时器来锻炼。这是我的。

我得到了属性

NSInteger attemptInt;
NSInteger _counter;
NSDate *date = [NSDate date];

然后这两个方法用于我的计时器

- (void)startCountdown
{
    _counter = 8;

    NSTimer *timer = [NSTimer scheduledTimerWithTimeInterval:1
                                                      target:self
                                                    selector:@selector(countdownTimer:)
                                                    userInfo:nil
                                                     repeats:YES];
}

- (void)countdownTimer:(NSTimer *)timer
{
    _counter--;
    if (_counter <= 0) {
        [timer invalidate];
        NSLog(@"8 sec passed");
    }
}

然后这是我获取数据的地方。

- (void)getMenuItems:(NSString*)urlIn{
    NSURLSession *session = [NSURLSession sharedSession];
    [[session dataTaskWithURL:[NSURL URLWithString:urlIn] completionHandler:^(NSData *data, NSURLResponse *response, NSError *error) {
    //One problem I am facing is I have to call timer for main thread
   if ([date timeIntervalSinceNow] <= 8 && [response expectedContentLength] == 0) {
        attemptInt++;
        [self getMenuItems:url];
    }
    if (attemptInt >= 3) {
        NSLog(@"NO DATA");
    }
    else if ([response expectedContentLength] == 0) {
        NSLog(@"TRY AGAIN");
        attemptInt++;
        [self getMenuItems:url];
    }
    else {
        //GOT MY DATA :)
        self.mealdata=[[MealData alloc]init:data];
    }

所以我的尝试已经成功了,是不是设置了一个计时器?我只需要一些帮助来完成检查是否先过了 8 秒?