Swift - Parse a string which contains a URL

11,034

The query part of an URL can be parsed with URLComponents

let yourTargetUrl = URL(string:"http://www.foo.ir/baz/result_false.php?error=Canceled%20By%20User")!

var dict = [String:String]()
let components = URLComponents(url: yourTargetUrl, resolvingAgainstBaseURL: false)!
if let queryItems = components.queryItems {
    for item in queryItems {
        dict[item.name] = item.value!
    }
}
print(dict)
Share:
11,034
ava
Author by

ava

Updated on June 17, 2022

Comments

  • ava
    ava almost 2 years

    How can parse this string :

    http://www.ha***ay.ir/pa***nt/result_false.php?error=Canceled%20By%20User

    I tried using the code given below for converting the given string to a dictionary. But I got this error :

    The data couldn’t be read because it isn’t in the correct format.

    This is my code :

    func webViewDidFinishLoad(_ webView: UIWebView) {      
        print("finish loading")
        let yourTargetUrl = webView.request?.url?.absoluteString
        print(yourTargetUrl!)
        let parse = convertToDictionary(text: yourTargetUrl!)
    }
    
    func convertToDictionary(text: String) -> [String: Any]? {
        if let data = text.data(using: .utf8) {
            do {
                return try JSONSerialization.jsonObject(with: data, options: []) as? [String: Any]
            } catch {
                print(error.localizedDescription)
            }
        }
        return nil
    }
    
  • Ivan Cantarino
    Ivan Cantarino about 6 years
    Was having issues parsing URLs and this was helpful