2011-07-18 5 views
0

Dans mon application, je souhaite afficher un message d'erreur si la connexion réseau est trop lente après quelques secondes. Comment devrais-je l'implémenter? Voici le code:Comment déclencher une action après un certain laps de temps?

-(void)setProjectID:(NSString *)newProject { 
    [self willChangeValueForKey:@"projectID"]; 
    [projectID release]; 
    projectID = [newProject copy]; 
    [self didChangeValueForKey:@"projectID"]; 

    // Since we have an ID, now we need to load it 
    NSInvocation *returnInvocation = [NSInvocation invocationWithMethodSignature: 
             [Detail instanceMethodSignatureForSelector:@selector(configureView:)]]; 
    [returnInvocation setTarget:self]; 
    [returnInvocation setSelector:@selector(configureView:)]; 
    [returnInvocation retainArguments]; 

    fetch = [[WBWDocumentFetcher alloc] init]; 
    [fetch retrieveDocument:[NSURL wb_URLForTabType:PROJECT_DETAILS inProject:projectID] returnBy:returnInvocation]; 
} 
-(void)configureView:(NSDictionary *)serverResult 
{ 
} 

Merci,

Répondre

1

Vous voulez utiliser performSelector:afterDelay: ou peut-être performSelector:withObject:afterDelay:.

Puis, au début de la méthode appelée, vérifiez si la page a été chargée. Si ce n'est pas le cas, affichez un UIAlertView et annulez le chargement.

+0

sur quel objet dois-je utiliser ce code. Je n'en vois pas dans mon code. – Ashutosh

+0

Aussi comment dois-je vérifier si la page a chargé ou non? – Ashutosh

+0

Sans voir votre code, c'est plutôt difficile à dire. Si vous utilisez un 'UIWebView', par exemple, alors vous voulez probablement le mettre dans' -webViewDidStartLoad: ' – PengOne

0

Si vous utilisez le NSURLRequest pour demander le serveur, utilisez le code suivant pour déterminer le délai d'attente.

//In this you can set timeoutinterval for request 
NSURLRequest* request = [NSURLRequest requestWithURL:yourURL cachePolicy:NSURLRequestUseProtocolCachePolicy timeoutInterval:60.0]; 

//If request is failing for time out reason you can check that and alert user accordingly. 
-(void)connectionFailed:(NSError *)error 
{ 
UIAlertView *objAlert = [[UIAlertView alloc] init]; 
[objAlert setTitle:@"Internet Connection"]; 
[objAlert addButtonWithTitle:@"Ok"]; 
if([error code] == -1001 || [[error localizedDescription] isEqualToString:@"timed out"]){ 
     [objAlert setMessage:@"Request Timed Out."]; 
     [objAlert show]; 
    } 
} 
Questions connexes