可以将文章内容翻译成中文,广告屏蔽插件可能会导致该功能失效(如失效,请关闭广告屏蔽插件后再试):
问题:
I have a for-loop that currently loops 4 times.
//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]; }
As you can see the URL has a digit in it that get incremented by 1 each loop to create a new URL where the next image will be. However, the amount of images on the server won't necessarily be 4, it could be a lot more or even less. My problem is this, is there a way I can check if there is an image stored at the URL? And if there is not, break the loop and continue program execution?
Thanks,
Jack
回答1:
Here is idea to check with HTTP response
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 }
or
while(httpStatus == 200){ static int increment = 0; increment++; // check other URL yoururl/somthing/increment++ }
but it will be slow. what my suggestion is, if you are using your own webserver, then, you can send all the image information initially. I'm sure you are doing this job on annonymous or other website :) Let me know if it helps you or not
回答2:
Here is simplest way to check if URL is valid:
NSURL *URL = [NSURL URLWithString:@"www.your.unvalidated.yet/url"]; if ( [[UIApplication sharedApplication] canOpenURL:[URL absoluteURL]] ) { //your link is ok }