URLComponents найти ноль
Итак, мое условие здесь заключается в том, что если URL содержится com://******/sendto/webview
тогда он должен открыться в браузере внутри моего приложения, иначе он откроется в Safari. Я не могу понять, что я делаю не так?
if let url = homeObject["deeplink_url"] as? String, url != "" {
if url.contains("com://******/sendto/webview") {
if url.contains("?url") {
self.fixMalformedURL(url)
} else {
if let urlComponents = URLComponents(url: URL(string: url)!, resolvingAgainstBaseURL: true) {
let webViewTitle = urlComponents.queryItems!.filter({ $0.name == "title" }).first
let webViewURL = urlComponents.queryItems!.filter({$0.name == "url"}).first
let storyboard = UIStoryboard(name: "Main", bundle: nil)
let vc = storyboard.instantiateViewController(withIdentifier: "FeaturedWebViewController") as! FeaturedWebViewController
vc.webViewTitle = webViewTitle!.value
vc.dynamicURL = webViewURL!.value
self.navigationController?.pushViewController(vc, animated: true)
}
}
} else {
UIApplication.shared.openURL(URL(string: url)!)
}
}
1 ответ
Решение
Ваше приложение может быть аварийно завершено, потому что вы пытаетесь получить фильтр поля "title", но его поле не существует в URL, поэтому здесь работает код, если в URL есть пробел, затем удалите его
let homeObject = ["deeplink_url":"com://www.xxxyyy.com?title=topPersons&url=google.com"]
if let url = homeObject["deeplink_url"], url != "" {
if url.contains("www.xxxyyy.com") {
if url.contains("?url") {
//asdj asd asd asdasdfasdf asdfa sdf asdf asdf asdf asdf a sdf asd asdghgjkkjkjkljkljkjkl jkljkljkl jklj jl jljasd asd asdf asd asdf asdf asdf asd asdf asdf aasasaasdasdfasdf asdf asdasdfasdf hoasdasd
} else {
if let urlComponents = URLComponents(url:URL.init(string: url)!, resolvingAgainstBaseURL: false)
{
let webViewTitle = urlComponents.queryItems!.filter({ $0.name == "title" }).first
let webViewURL = urlComponents.queryItems!.filter({$0.name == "url"}).first
let storyboard = UIStoryboard(name: "Main", bundle: nil)
let vc = storyboard.instantiateViewController(withIdentifier: "FeaturedWebViewController") as! FeaturedWebViewController
vc.webViewTitle = webViewTitle!.value
vc.dynamicURL = webViewURL!.value
self.navigationController?.pushViewController(vc, animated: true)
}
}
} else {
UIApplication.shared.openURL(URL(string: url)!)
}