URL的host在和macOS 13
中已被弃用,但替代方案在某些情况下会崩溃。
示例:
let url = URL(string: "lorem.com")
print(url?.host) // deprecated warning, prints nil
print(url?.host()) // crash: Thread 1: EXC_BREAKPOINT (code=1, subcode=0x18084f9d4)
虽然 lorem.com
不符合 RFC 1808
(URL 的最常见形式),但请求它的主机以前会返回 nil
,而不是崩溃。
使用 host(percentEncoded: true)
或 host(percentEncoded: false)
都会出现同样的行为。
有什么解决方法吗?
let host = url?.scheme == nil ? nil : url?.host()
,但实际上,这似乎是一个错误,可能会被修复。因此,保留“旧”的host
似乎是更合理的解决方案。 - GergelyRFC 1808
。但这里的主要问题是迁移到新功能是不安全的。 - vicegaxURL(string: "https://")
,似乎使用已弃用的属性是唯一的解决方法。 - wildpeaks