我正在创建一个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!
}
1条答案
按热度按时间hfyxw5xn1#
永远不要使用感叹号。它的意思是“让我崩溃”。当你真的崩溃时,你几乎不会感到惊讶,因为那正是你说要做的。
如果
components.url
结果是nil
,则没有可返回的有用值,这肯定会发生因此,只需将public var url: URL
更改为返回URL?
,然后返回components.url
,这样调用者就有责任检查url
是否为nil
,并且它可以通过使用通常的if let url
舞蹈来安全地继续展开。