2016-05-06 15 views
3

Ich versuche, Daten vom Server lokal zu speichern, wenn erforderlich. Die Daten sind an verschiedenen Orten vorhanden. Ich möchte all diese Apis auf einen einzigen Refresh-Klick anrufen. Hilf mir, das zu lösen.So rufen Sie mehrere Ruhe-API nacheinander in Schleife

-(void) call:(NSString *)url{ 

      NSURLRequest *Request1 = [NSURLRequest requestWithURL :[NSURL URLWithString:url] cachePolicy:NSURLRequestReloadIgnoringCacheData timeoutInterval:30.0]; 
      // calling only one api 
      NSURLConnection *connection = [[NSURLConnection alloc] initWithRequest:Request1 delegate:self startImmediately:YES]; 
      //   flag = true; 
      [SVProgressHUD showWithStatus:@"Wait while we fetch data .."]; 
      if (connection){ 
       NSLog(@"connection success"); 
      } 
      else{ 
       // handle error here 
      } 

} 
+0

Was haben Sie versucht? Auch deine Frage ist ein bisschen vage, wie und was du erreichen willst. – rckoenes

+0

Bitte geben Sie Informationen, was Sie bei der Aktualisierung tun möchten klicken Sie auf –

+0

Ich arbeite an einem Projekt, das seine Daten alle 5 Minuten aktualisieren muss und ich habe viele API-URL, um Daten entsprechend zu bekommen, so meine Fragen ist, wie ich diese anrufe URL zusammen, so bekomme ich eine Antwort nach der anderen. – vaibhav

Antwort

-1

Try this,

**.h** 

    @property (nonatomic, strong) NSArray *arrURLs; 

**.m** 

- (void)viewDidLoad 
{ 
     [super viewDidLoad]; 

     self.arrURLs = [[NSArray alloc]initWithObjects:@"URL1",@"URL2",@"URL3", nil]; 
      NSTimer *timer; 

timer = [NSTimer scheduledTimerWithTimeInterval: 5 
             target: self 
             selector: @selector(fetchContent) 
             userInfo: nil 
             repeats: YES]; 

} 

-(void)fetchContent 
{ 
    [self fetchContentOnebyOne:0]; 
} 

- (void)fetchContentOnebyOne:(int)index 
    { 
    __block int cIndex = index; 


    if(index >= self.arrURLs.count) 
     return; 


NSString *strURL = [self.arrURLs objectAtIndex:index]; 

[self fetchfromServer:strURL withCompletion:^(BOOL isSuccessful) 
{ 
    if (isSuccessful) { 

     cIndex++; 

     [self fetchContentOnebyOne:cIndex]; 

    } 
    else 
    { 
     cIndex++; 
     [self fetchContentOnebyOne:cIndex]; 
    } 
    if (cIndex == self.arrURLs.count) { 
     NSLog(@"updated all content...."); 
    } 
}]; 
} 



- (void)fetchfromServer:(NSString*)strURL withCompletion:(void (^)(BOOL isSuccessful))completion 
{ 

NSURLRequest *Request1 = [NSURLRequest requestWithURL :[NSURL URLWithString:strURL] cachePolicy:NSURLRequestReloadIgnoringCacheData timeoutInterval:30.0]; 
NSURLConnection *connection = [[NSURLConnection alloc] initWithRequest:Request1 delegate:self startImmediately:YES]; 
//   flag = true; 
[SVProgressHUD showWithStatus:@"Wait while we fetch data .."]; 
if (connection){ 
    NSLog(@"connection success"); 
    completion(true); 
} 
else{ 
    // handle error here 
    completion(false); 
} 

} 
+0

Ich denke, es könnte nützlicher sein, eine Beschreibung von dem, was Sie tun, zu bieten. Wenn Vaibhav oder jemand anderes in der Zukunft ein ähnliches Problem hat, können Sie lernen, wie Sie es beheben können, anstatt nur Ihren Code zu kopieren und einzufügen. – Ollie

+0

@ Ollie, hier habe ich alles klar gepostet, Was ist dein Zweifel? – Ravindhiran

+0

Ich denke, einige Kommentare über das, was Sie tun, könnten für Anfänger Programmierer hilfreich sein, die die Frage in der Zukunft finden. – Ollie

Verwandte Themen