2016-05-12 97 views
0

我在新的iOS斯威夫特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枚举值函数的原因。)

==== ====更新

MethodAlamofire库,我不能改变任何东西。看起来这是一个名称冲突。但是如何摆脱这个问题呢?

+0

可能是一个名称冲突与名为'Method'另一种类型。更改枚举的名称或以模块名称('Appname.Method')作为前缀 – dan

+0

我更新了我的帖子。 '方法'来自阿拉莫菲尔图书馆。 –

+0

使用'Alamofire.Method'作为函数中的类型名称 – dan

回答

1

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

您有模块名称的前缀类型名告诉它要使用哪一个:

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

是的,没错。谢谢。 –

0

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

+0

我更新了我的帖子。 '方法'来自阿拉莫菲尔图书馆,我无法改变任何事情。如何摆脱这个问题? –

相关问题