【发布时间】:2010-09-28 10:57:02
【问题描述】:
我是 iPhone 开发和 Objective-C 的新手。使用 ZBar SDK,我开发了一个基本的应用程序,它可以扫描相册中的 QR 图像并输出它翻译成的内容。
我想知道是否有办法获取此输出,确定它是否是 URL,如果是,则在网络浏览器中打开它。
【问题讨论】:
标签: iphone objective-c xcode
我是 iPhone 开发和 Objective-C 的新手。使用 ZBar SDK,我开发了一个基本的应用程序,它可以扫描相册中的 QR 图像并输出它翻译成的内容。
我想知道是否有办法获取此输出,确定它是否是 URL,如果是,则在网络浏览器中打开它。
【问题讨论】:
标签: iphone objective-c xcode
如果传递的 URL 无效,NSURL 的 URLWithString 将返回 nil。因此,您只需检查返回值即可确定 URL 是否有效。
更新
仅仅使用URLWithString:通常是不够的,你可能还想检查url是否有scheme和host,否则al:/dsfhkgdsk等url会通过测试。
所以你可能想做这样的事情:
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);
}
如果您只想接受 http 网址,您可能需要添加 [url.scheme isEqualToString:@"http"]。
【讨论】:
这是我遇到的另一种解决方案。你可以这样做。
NSURLRequest *req = [NSURLRequest requestWithURL:[NSURL URLWithString:@"yourstring"]];
bool valid = [NSURLConnection canHandleRequest:req];
【讨论】:
您可以查看以下代码来检查字符串是否包含网站 url 或简单文本。
NSString *getString =[[NSUserDefaults standardUserDefaults]valueForKey:@"searchKey"];
if([getString rangeOfString:@"Www"].location == NSNotFound
&& [getString rangeOfString:@"www"].location == NSNotFound && [getString rangeOfString:@"com"].location == NSNotFound)
{
[companyNameTF setText:[[NSUserDefaults standardUserDefaults]valueForKey:@"searchKey"]];
}
else
{
[websiteTF setText:[[NSUserDefaults standardUserDefaults]valueForKey:@"searchKey"]];
}
【讨论】:
www 和com 的网址,这绝不是全部。仅当您知道 URL 的外观时,它才有效。