我想检查NSString
是否是有效的网址,以便我可以将其解析为NSURL
变量...是否有一种简单的方法可以执行此操作? :)
CRASH 出于某种原因,应用程序在检查时崩溃了.....
NSURL *shortURL = [[NSURL alloc] initWithString:data];
if(shortURL == nil)
{
NSLog(@"INVALID");
}
else {
NSLog(@"COOOL");
}
控制台给我这个错误.....
*由于未捕获的异常'NSInvalidArgumentException'而终止应用程序,原因:'* - [NSURL initWithString:relativeToURL:]:nil string parameter' 2010-03-01 19:24:14.797 Snippety [8289:5e3b]筹码:( 8307803, 2419510843, 8391739, 8391578, 2898550, 3152497, 12262, 12183, 27646, 2662269, 2661144, 2454790485, 2454790162 )
答案 0 :(得分:12)
编辑:以下答案不正确。 (Apple文档:https://developer.apple.com/library/mac/documentation/Cocoa/Reference/Foundation/Classes/NSURL_Class/index.html)
NSURL
的{{1}}会返回URLWithString
。因此,您只需检查返回值即可确定URL是否有效。
示例:
nil
答案 1 :(得分:7)
我使用以下方法检查NSString testString是否是有效的URL:
NSURL *testURL = [NSURL URLWithString:testString];
if (testURL && [testURL scheme] && [testURL host])
{
NSLog(@"valid");
}
{
NSLog(@"not valid");
}
scheme 测试网址的前缀,例如http://,https://或ftp://
主机测试网址,例如google.com或images.google.com
注意:这仍然会给你一些误报,例如:检查http://google,com时(注意逗号)将返回有效,但它确实比仅检查NSURL是否为零([NSURL urlWithString:@"banana"]
不为零)更精确。
答案 2 :(得分:0)
这基本上就是+[NSURLConnection canHandleRequest:]
方法的作用。此方法对NSURLRequest
运行预检检查,以确保该请求是可解决的。要快速检查特定的URL,可以执行以下操作:
BOOL isValidURL = [NSURLConnection canHandleRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:@"https://example.com"]];