为什么URL需要在此处强制展开或使用默认值?

时间:2018-09-27 00:20:17

标签: swift xcode

我有一个路由器类,在实例化时将填充一些路由:

private func populateRoutes() {
     routes.addRoute(url: URL(string: Resource.home.rawValue)!, actions: [RequestMethod.head: headAction, RequestMethod.get: getAction])
     routes.addRoute(url: URL(string: Resource.test.rawValue)!, actions: [RequestMethod.get: getAction])
}

我还有一个枚举类来存储路线的字符串表示形式:

public enum Resource: String {
    case home = "/index"
    case test = "/simple_get"
}

我不明白为什么Xcode会因为不提供默认值(??)或使用强制展开(!)而给我一个错误

1 个答案:

答案 0 :(得分:1)

URL的字符串构造函数返回一个可选URL,因此编译器要求您为addRoute的调用提供一个非可选参数。

URL初始化文档?(string:String)here说,如果由于提供的字符串而无法形成URL,则返回nil。