为何这段Swift代码未输出failed?如何构造无效URL触发该输出?
问题1:什么属于无效URL?
无效URL指不符合URL语法规范、无法被标准解析器识别的字符串,常见情况包括:
- 包含未编码的空格
- 存在未转义的特殊字符(如
\、|、{、}等) - 缺少必要结构且不符合相对路径规则(比如无协议头的混乱字符组合)
- 包含非法域名格式或错误的网络地址结构(比如格式错误的IPv6地址)
- 带有无法正确解码的错误编码字符
问题2:如何修改urlString让代码输出failed?
要让URL(string:)返回nil从而触发failed输出,只需传入无法被解析为有效URL的字符串即可,举几个可行的例子:
- 带未转义反斜杠的字符串:
let urlString = "asdf\\ghj" - 带未转义竖线的字符串:
let urlString = "http://example.com|test" - 包含控制字符的字符串:
let urlString = "http://example.com\u{0000}" - 纯非法字符组合:
let urlString = "{}[]|\\^"
注:你当前传入的带空格字符串能被解析成功,是因为URL(string:)会尝试对部分不规范字符做隐式兼容处理,但上述例子中的字符无法被解析修复,会直接返回nil。
内容的提问来源于stack exchange,提问作者Luis Ramirez
相关产品推荐
相关产品推荐

