Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/26.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Objective c 检查url是否有效,以便我可以将其传递给NSURL?_Objective C_Nsstring_Nsurl - Fatal编程技术网

Objective c 检查url是否有效,以便我可以将其传递给NSURL?

Objective c 检查url是否有效,以便我可以将其传递给NSURL?,objective-c,nsstring,nsurl,Objective C,Nsstring,Nsurl,我想检查NSString是否是有效的URL,以便将其解析为NSURL变量。。。有没有简单的方法可以做到这一点?:) 崩溃 由于某些原因,应用程序在检查时崩溃 NSURL *shortURL = [[NSURL alloc] initWithString:data]; if(shortURL == nil) { NSLog(@"INVALID"); } else { NSLog(@"COOOL"); } 控制台给了我这个错误 *由于未捕获的异常“NSInvalidArgument

我想检查
NSString
是否是有效的URL,以便将其解析为
NSURL
变量。。。有没有简单的方法可以做到这一点?:)

崩溃 由于某些原因,应用程序在检查时崩溃

NSURL *shortURL = [[NSURL alloc] initWithString:data];
if(shortURL == nil)
{
    NSLog(@"INVALID");
}
else {
    NSLog(@"COOOL");
}
控制台给了我这个错误

*由于未捕获的异常“NSInvalidArgumentException”而终止应用程序,原因:“*-[NSURL initWithString:relativeToURL:]:nil字符串参数” 2010-03-01 19:24:14.797片段[8289:5e3b]堆栈:( 8307803, 2419510843, 8391739, 8391578, 2898550, 3152497, 12262, 12183, 27646, 2662269, 2661144, 2454790485, 2454790162 )

编辑:以下答案不正确。(苹果文档:)


如果传递的URL无效,
NSURL
URLWithString
将返回
nil
。因此,您只需检查返回值即可确定URL是否有效

例如:

NSURL *url = [NSURL URLWithString:urlString];
if(url){ NSLog("valid"); }

我正在使用以下方法检查NSString testString是否为有效URL:

NSURL *testURL = [NSURL URLWithString:testString];
if (testURL && [testURL scheme] && [testURL host])
{
    NSLog(@"valid");
}
{
    NSLog(@"not valid");
}
方案测试URL的前缀,例如http://、https://或ftp://

host测试URL的域,例如google.com或images.google.com


注意:这仍然会给您带来一些误报,例如,当检查时(注意逗号)将返回有效值,但它肯定比仅检查NSURL是否为零更精确(
[NSURL urlWithString:@“banana”]
不是零)。

该方法基本上就是这样做的。此方法针对
NSURLRequest
运行飞行前检查,以确保请求可解析。要快速检查特定URL,可以执行以下操作:

BOOL isValidURL = [NSURLConnection canHandleRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:@"https://example.com"]];

由于某种原因,应用程序正在崩溃。。。。。如果URL是有效的,它就会工作,如果不是,它就会崩溃??上面的代码try URLWithString而不是initWithStringNSURL将很乐意处理除nil之外的任何字符串值。这是唯一一个你需要知道的特殊情况,因为这是错误的。当使用URLWithString时,任何字符串都将作为url传递。结果表明,对于OS X 10.7等版本,
NSURL
nil
字符串的处理最近发生了相当大的变化:缺少了其他字符串