我是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")
}
如您所见,我定义了第一个参数Method
,Alamofire使用了该参数。我查看了Method
,它是Enum
定义如下:
public enum Method: String {
case OPTIONS, GET, HEAD, POST, PUT, PATCH, DELETE, TRACE, CONNECT
}
为什么我不能使用枚举类型作为我的函数的参数类型?
(我之所以这样做是因为我不想传递String
类型并检查字符串是否为'get'
然后使用.GET
,所以,我想直接将Method
枚举值传递给函数。)
====更新====
Method
来自Alamofire图书馆,我无法改变任何内容。看起来这是一个名称冲突。但是如何摆脱这个问题?
答案 0 :(得分:1)
编译器会看到多个名为Method
(Alamofire.Method
和ObjectiveC.Method
)的类型,并且不知道您要将哪一个用于您的函数。
您必须在类型名称前加上模块名称,以告诉它使用哪一个:
func sendRequest(method: Alamofire.Method, resource: String) -> NSDictionary {
Alamofire.request(method, "https://httpbin.org/get")
}
答案 1 :(得分:0)
Method
与同名的运行时类型不明确。我建议选择一个不与现有类型冲突的不同类型名称。