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)!)
      }
Другие вопросы по тегам