在我的iOS应用中,我使用以下代码打开链接:
[[UIApplication sharedApplication] openURL:[NSURL URLWithString:[NSString stringWithFormat:@"%@",myurl]]];
链接是动态的,不提供HTTP / HTTPS。
我无法对HTTP或HTTPS进行硬编码,因为我不知道该网址是HTTP还是HTTPS。如何在不指定HTTP或HTTPS的情况下打开URL?
答案 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
}
}