2016-12-19 2 views
0

Как разобрать эту строку:Swift - Разбираем строку, которая содержит URL

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

Я попытался использовать приведенный ниже код для преобразования данной строки в словарь. Но я получил эту ошибку:

Данные не могут быть прочитаны, так как они не в правильном формате.

Это мой код:

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 
     } 
+1

Что вы имеете в виду под "Преобразование строки в словарь? Какими должны быть ключи и ценности? –

+1

Вы не можете десериализовать эту строку. Это вовсе не JSON. – vadian

+0

@MaxPevsner Я хочу преобразовать эту часть error = Отменено% 20By% 20User в пару значений ключа – ava

ответ

8

query часть URL может быть проанализирован с 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) 
+0

спасибо, это действительно полезно – ava

+0

Имеет проблемы с разбором URL-адресов, и это было полезно –

Смежные вопросы