发送多个 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 秒?
我有一个看起来像这样的 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 秒?