Objective-C – Comprobar si existe la URL.

Tengo un bucle forzado que actualmente bucle 4 veces.

//Add all the URLs from the server to the array for (int i = 1; i <= 5; i++){ NSString *tempString = [[NSString alloc] initWithFormat : @"http://photostiubhart.comoj.com/GalleryImages/%dstiubhart1.jpg", i]; [myURLS addObject: [NSURL URLWithString:tempString]]; [tempString release]; } 

Como puede ver, la URL tiene un dígito que se incrementa en 1 cada ciclo para crear una nueva URL donde estará la siguiente image. Sin embargo, la cantidad de imágenes en el server no será necesariamente 4, podría ser mucho más o incluso less. Mi problema es este, ¿hay alguna manera de que pueda comprobar si hay una image almacenada en la URL? Y si no es así, ¿romper el ciclo y continuar con la ejecución del progtwig?

Gracias,

Jack

Aquí tiene la idea de verificar con la respuesta HTTP

 NSURLRequest *request; NSURLResponse *response = nil; NSError **error=nil; NSData *data=[[NSData alloc] initWithData:[NSURLConnection sendSynchronousRequest:request returningResponse:&response error:error]]; NSString* retVal = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding]; // you can use retVal , ignore if you don't need. NSInteger httpStatus = [((NSHTTPURLResponse *)response) statusCode]; NSLog(@"responsecode:%d", httpStatus); // there will be various HTTP response code (status) // you might concern with 404 if(httpStatus == 404) { // do your job } 

o

 while(httpStatus == 200){ static int increment = 0; increment++; // check other URL yoururl/somthing/increment++ } 

pero será lento ¿Cuál es mi sugerencia? Si está utilizando su propio server web, entonces, puede enviar toda la información de la image inicialmente. Estoy seguro de que estás haciendo este trabajo en un website anónimo o de otro tipo 🙂 Házmelo saber si te ayuda o no

Esta es la forma más sencilla de verificar si la URL es válida:

 NSURL *URL = [NSURL URLWithString:@"www.your.unvalidated.yet/url"]; if ( [[UIApplication shanetworkingApplication] canOpenURL:[URL absoluteURL]] ) { //your link is ok }