假设我有以下URL:
为了获取12345555或543333,我们可以使用URL的
但是假设我的链接包含路径中的
为什么
https://something.com/room/order/12345555/product/543333?is_correct=true
。这是一种深层链接,我应该解析它的参数并显示一些视图控制器。我对12345555、543333和true的值感兴趣。实际上,很容易获取这些参数。为了获取12345555或543333,我们可以使用URL的
pathComponents
,它返回["/", "room", "order", "12345555", "product", "543333"]
。要获取查询项(is_correct: true),我们可以使用URLComponents
。一切都很清晰简单。但是假设我的链接包含路径中的
#
,如https://something.com/room/#/order/12345555/product/543333?is_correct=true
。现在,对于这个链接,pathComponents
只返回["/", "room"]
,忽略其他所有内容。当然,查询参数也存在问题。为什么
#
符号会影响到这样呢?我该如何解决这个问题?我应该用某些东西替换#
,还是Swift的URL
包含一些帮助方法?谢谢。
#
符号代表 URL 片段。 - undefinedurl.fragment
,它会返回#后面的所有内容吗? - undefinedurl.fragment
返回的是字符串,基本上你不能使用方便的方法,比如pathComponents
和URLComponents
。 - undefinedroom/#/order
和room/order
可以互换使用的情况?如果是这样,像.replacingOccurrences(of: "/#/", with: "/")
这样的代码可能是转换的第一步。否则,你可以使用类似let fragmentUrl = URL(string: url.fragment!, relativeTo: url)!
的代码来获取#
后面的内容。 - undefined