swift 安全解包URL类型

zbwhf8kr  于 2022-12-03  发布在  Swift
关注(0)|答案(1)|浏览(134)

我正在创建一个url来传递到request的旁边,作为回报,我的应用程序崩溃了,因为它意外地发现了nil,当debuggin -〉我确实有url时,所以我的问题是,我如何才能避免在这里使用force unwrap?当我使用guard或if let时,我应该返回什么?URL?它将再次是可选的。使var url: URL?对我也没有好处。

public var url: URL {
    var components = URLComponents()
    components.scheme = scheme
    components.host = ipAddress
    components.path = endpoint
    components.port = port
    components.queryItems = urlQueryItems
    return components.url!.removingPercentEncoding!
}
hfyxw5xn

hfyxw5xn1#

永远不要使用感叹号。它的意思是“让我崩溃”。当你真的崩溃时,你几乎不会感到惊讶,因为那正是你说要做的。
如果components.url结果是nil,则没有可返回的有用值,这肯定会发生因此,只需将public var url: URL更改为返回URL?,然后返回components.url,这样调用者就有责任检查url是否为nil,并且它可以通过使用通常的if let url舞蹈来安全地继续展开。

相关问题