不能将枚举类型作为参数类型的函数

时间:2016-05-12 17:58:23

标签: ios enums swift2

我是iOS Swift 2的新手。

我定义了一个简单的函数:

// ERROR: 'Method' is ambiguous for type lookup in this context
func sendRequest(method: Method, resource: String) -> NSDictionary {
     Alamofire.request(method, "https://httpbin.org/get")
}

如您所见,我定义了第一个参数MethodAlamofire使用了该参数。我查看了Method,它是Enum定义如下:

public enum Method: String {
    case OPTIONS, GET, HEAD, POST, PUT, PATCH, DELETE, TRACE, CONNECT
}

为什么我不能使用枚举类型作为我的函数的参数类型?

(我之所以这样做是因为我不想传递String类型并检查字符串是否为'get'然后使用.GET,所以,我想直接将Method枚举值传递给函数。)

====更新====

Method来自Alamofire图书馆,我无法改变任何内容。看起来这是一个名称冲突。但是如何摆脱这个问题?

2 个答案:

答案 0 :(得分:1)

编译器会看到多个名为MethodAlamofire.MethodObjectiveC.Method)的类型,并且不知道您要将哪一个用于您的函数。

您必须在类型名称前加上模块名称,以告诉它使用哪一个:

func sendRequest(method: Alamofire.Method, resource: String) -> NSDictionary {
     Alamofire.request(method, "https://httpbin.org/get")
}

答案 1 :(得分:0)

Method与同名的运行时类型不明确。我建议选择一个不与现有类型冲突的不同类型名称。