如何在iOS中未指定HTTP或HTTPS的情况下打开URL?

时间:2015-11-19 07:51:06

标签: ios uiwebview

在我的iOS应用中,我使用以下代码打开链接:

[[UIApplication sharedApplication] openURL:[NSURL URLWithString:[NSString stringWithFormat:@"%@",myurl]]];

链接是动态的,不提供HTTP / HTTPS。

我无法对HTTP或HTTPS进行硬编码,因为我不知道该网址是HTTP还是HTTPS。如何在不指定HTTP或HTTPS的情况下打开URL?

4 个答案:

答案 0 :(得分:3)

Swift的单线解决方案:

let urlString = "example.com"
let validUrlString = dataText.hasPrefix("http") ? urlString : "http://\(urlString)"

答案 1 :(得分:2)

谁说你不知道url是否包含http?你可以找到......

prefixheader.pch下面写一下。

#define contains(str1, str2) ([str1 rangeOfString: str2 ].location != NSNotFound)

然后在你的.m中写下。

if (!contains(myurl, "http")) {
    myurl = [NSString stringWithFormat:@"http://%@", myurl];
}

你完成了!!!

如果您还有其他需要,请告诉我。

答案 2 :(得分:2)

rangeOfString匹配不是一个好方法。 您可以将其匹配为:

NSString *urlScheme = [url scheme];
  if (urlScheme == nil) {
    url = [NSURL URLWithString:[NSString stringWithFormat:@"http://%@",urlString]];
  }

您不必担心它是http还是https。只要您点击http上的网址,它就会自动重定向到https

答案 3 :(得分:2)

我认为这是比这里介绍的方法更好的方法,因为它避免了字符串比较和操作。

public extension URL {
  var sanitise: URL {
    if var components = URLComponents(url: self, resolvingAgainstBaseURL: false) {
      if components.scheme == nil {
        components.scheme = "http"
      }

      return components.url ?? self
    }

    return self
  }
}