iPhone SDK:如何检查用户输入的IP是否有效?

Chr*_*ris 3 iphone objective-c ip-address nsurlrequest

我的iPhone应用程序包含几个到服务器的http请求.用户可以输入服务器的IP地址,以便您可以将该应用程序与您自己的专用服务器结合使用.

在发出请求之前,我总是检查输入的IP地址是否有效,我这样做:

-(BOOL)urlExists {

NSString *url = [NSString stringWithFormat:@"%@", ipAddress];
NSURLRequest *myRequest1 = [NSURLRequest requestWithURL:[NSURL URLWithString:url] cachePolicy:NSURLRequestUseProtocolCachePolicy timeoutInterval:5.0];
NSHTTPURLResponse* response = nil;
NSError* error = nil;
[NSURLConnection sendSynchronousRequest:myRequest1 returningResponse:&response error:&error];
if ([response statusCode] == 404){
    return NO;

}
else{
    return YES;
}

[url release];
[response release];
[error release];
[myRequest1 release];

}
Run Code Online (Sandbox Code Playgroud)

只要输入的地址如下所示,这就完美地运行:xx.xx.xxx.xxx但是如果你尝试输入这样的东西,"1234"或"test",上面显示的代码不起作用.所以我不得不检查输入的地址"看起来"是否像IP地址,我不知道如何做到这一点.

任何建议都非常感谢!

Mit*_*tri 8

您可以从以下方法检查网址有效性:

- (BOOL) validateUrl: (NSString *) candidate {
    NSString *urlRegEx =
    @"(http|https)://((\\w)*|([0-9]*)|([-|_])*)+([\\.|/]((\\w)*|([0-9]*)|([-|_])*))+";
    NSPredicate *urlTest = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", urlRegEx]; 
    return [urlTest evaluateWithObject:candidate];
}
Run Code Online (Sandbox Code Playgroud)