如何确定字符串是否是Objective-C中的URL

Zac*_*ham 12 iphone xcode objective-c

我是iPhone开发和Objective-C的新手.使用ZBar SDK我开发了一个基本的应用程序,它扫描相册中的QR图像并输出它转换成的内容.

我想知道是否有办法获取此输出,确定它是否是URL,如果是这样,则在Web浏览器中打开它.

Dan*_*iel 30

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

UPDATE

只是使用URLWithString:通常是不够的,你可能还想检查url是否有一个方案和一个主机,否则,这样的网址al:/dsfhkgdsk将通过测试.

所以你可能想做这样的事情:

NSURL *url = [NSURL URLWithString:yourUrlString];
if (url && url.scheme && url.host)
{
   //the url looks ok, do something with it
   NSLog(@"%@ is a valid URL", yourUrlString);
}
Run Code Online (Sandbox Code Playgroud)

如果您只想接受您可能想要添加的http网址[url.scheme isEqualToString:@"http"].

  • 似乎有一个松散的定义什么是有效的URL."foo.com"将进行解析,因此您可能希望检查生成的对象是否具有scheme属性. (3认同)
  • 你不能只信任URLWithString,因为NSURL*url = [NSURL URLWithString:@"a"]; 会回报给你.见http://stackoverflow.com/questions/1471201/how-to-validate-an-url-on-the-iphone (3认同)