在iOS開發中我們經常需要獲取URLString中的參數值。
以下方法利用URLComponents
實現:
extension String {
/// 從 URLString 中截取參數
var urlParameters: [AnyHashable: Any]? {
/// 解析url
guard let urlComponents = URLComponents(string: self), let queryItems = urlComponents.queryItems else {
return nil
}
var parameters: [AnyHashable: Any] = [:]
/// 遍歷queryItems獲取每一項參數的鍵值對
queryItems.forEach { (item) in
/// 判斷是否有相同的key
if let existValue = parameters[item.name], let value = item.value {
/// 將相同key的值存入數組中
if var existValue = existValue as? [Any] {
existValue.append(value)
parameters[item.name] = existValue
} else {
parameters[item.name] = [existValue, value]
}
} else {
parameters[item.name] = item.value
}
}
/// 返回解析后的參數字典
return parameters
}
}