检查URL是否有http://前缀

mat*_*odv 16 url http hyperlink uiwebview ios


在我的应用程序中,当用户添加一个对象时,也可以为该对象添加一个链接,然后可以在webView中打开该链接.
我试图保存一个没有http://前缀的链接,然后在webView中打开但无法打开它!
在webView开始加载之前,有没有一种方法来检查保存的URL是否有http://前缀?如果还没有,我怎么能在URL中添加前缀?
谢谢!

Gre*_*reg 42

您可以- (BOOL)hasPrefix:(NSString *)aString在NSString上使用该方法来查看包含您的URL的NSString是否以http://前缀开头,如果没有,则添加前缀.

NSString *myURLString = @"www.google.com";
NSURL *myURL;
if ([myURLString.lowercaseString hasPrefix:@"http://"]) {
    myURL = [NSURL URLWithString:myURLString];
} else {
    myURL = [NSURL URLWithString:[NSString stringWithFormat:@"http://%@",myURLString]];
}
Run Code Online (Sandbox Code Playgroud)

我目前远离我的mac并且无法编译/测试此代码,但我相信上述应该可行.

  • 我想我的答案提供了足够的信息,马修可以解决他的问题. (4认同)

tc.*_*tc. 16

NSString * urlString = ...;
NSURL * url = [NSURL URLWithString:urlString];
if (![[url scheme] length])
{
  url = [NSURL URLWithString:[@"http://" stringByAppendingString:urlString]];
}
Run Code Online (Sandbox Code Playgroud)


shi*_*him 6

最好schemeURL对象上使用该属性:

extension URL {
    var isHTTPScheme: Bool {
        return scheme?.lowercased().contains("http") == true // or hasPrefix
    }
}
Run Code Online (Sandbox Code Playgroud)

用法示例:

let myURL = URL(string: "/sf/answers/3418458361/")!
if myURL.isHTTPScheme {
    // handle, e.g. open in-app browser:            
    present(SFSafariViewController(url: url), animated: true)
} else if UIApplication.shared.canOpenURL(myURL) {
    UIApplication.shared.openURL(myURL)
}
Run Code Online (Sandbox Code Playgroud)