我正在创建手动Firebase动态链接
如何获取accessCode的值?
extension URL {
func valueOf(_ queryParameterName: String) -> String? {
guard let url = URLComponents(string: self.absoluteString) else { return nil }
return url.queryItems?.first(where: { $0.name == queryParameterName })?.value
}
}
使用此扩展名,查询项目为link
,apn
和ofl
。
url.valueOf("link")
返回:
https://test.page.link/?link=https://test.page.link/register?accessCode=AA000000
我只需要返回AA000000
。
答案 0 :(得分:2)
由于link
具有网址格式,因此请从中创建一个URL
实例,然后使用accessCode
这样的方法获取valueOf(_:)
值,
if let link = url.valueOf("link"), let linkUrl = URL(string: link) {
let accessCode = linkUrl.valueOf("accessCode")
print(accessCode)
}
答案 1 :(得分:1)
您在URL内有一个URL,更确切地说,在查询值内有一个URL,那么如何使用:
extension URL {
func valueOf(_ queryParameterName: String) -> String? {
guard let url = URLComponents(string: self.absoluteString) else { return nil }
guard let queryItems = url.queryItems else { return nil }
for aQueryItem in queryItems {
if aQueryItem.name == queryParameterName {
return aQueryItem.value
} else if let subvalue = aQueryItem.value, let subURL = URL(string: subvalue), let found = subURL.valueOf(queryParameterName) {
return found
}
}
return nil
}
}
现在您可以使用url.valueOf("accessCode")