本文介绍了如何在Swift中将url.query转换为字典?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我有一个URL进入AppDelegate方法:
I have a URL coming in to the AppDelegate method:
func application(_ application: UIApplication, open url: URL, sourceApplication: String?, annotation: Any) -> Bool { }URL看起来像 www.wesite/shareplace.html?placeid=123 .
如何将其转换为易于访问的字典?
How can it be converted to a dictionary for easy access?
我在某个网站上找到了一些代码,但是在Xcode 9中显示了一个错误:
I found some code on some website, but it's showing an error in Xcode 9:
extension URL { var queryDictionary: [String: AnyObject]? { return URLComponents(url: self, resolvingAgainstBaseURL: false)? .queryItems? .reduce([:], combine: { (var result: [String: AnyObject], queryItem) -> [String: AnyObject] in if queryItem.value?.containsString(",") ?? false { let array = queryItem.value?ponentsSeparatedByString(",") result[queryItem.name] = array } else { result[queryItem.name] = queryItem.value } return result }) } }.reduce([:],组合:{(var result:[String:AnyObject],queryItem)->中的[String:AnyObject](变量结果)参数可能没有'var'指示符
.reduce([:], combine: { (var result: [String: AnyObject], queryItem) -> [String: AnyObject] in (var result) Parameters may not have the 'var' specifier
推荐答案简单扩展
extension URL { var queryDictionary: [String: String]? { guard let query = self.query else { return nil} var queryStrings = [String: String]() for pair in queryponents(separatedBy: "&") { let key = pairponents(separatedBy: "=")[0] let value = pair ponents(separatedBy:"=")[1] .replacingOccurrences(of: "+", with: " ") .removingPercentEncoding ?? "" queryStrings[key] = value } return queryStrings } }用法
let urlString = "www.youtube/video/4bL4FI1Gz6s?hl=it_IT&iv_logging_level=3&ad_flags=0&endscreen_module=s.ytimg/yt/swfbin/endscreen-vfl6o3XZn.swf&cid=241&cust_gender=1&avg_rating=4.82280613104" let url = URL(string: urlString) print(url!.queryDictionary ?? "NONE")更多推荐
如何在Swift中将url.query转换为字典?
发布评论