在这种情况下,“方法”对于types查找是不明确的,在Alamofire中是错误的

我正在使用Alamofire进行networking处理,遇到一个奇怪的错误。 看来我们不能通过Method enum作为参数。
[错误在方法参数上]

在这里输入图像说明

private func apiRequest(method: Method, url: String, apiData: [String : AnyObject], completion:(finished: Bool, response: AnyObject?) ->Void) { Alamofire.request(method, url, parameters: apiData).responseJSON{ response in if let JSON = response.result.value { completion(finished: true, response: JSON) } else { completion(finished: false, response:nil) } } } 

您必须指定要从中查找对象types的模块。 打电话给Alamofire.Method

有可能是名称相撞。 要解决这个问题,你可以使用enum的限定名(包括模块名):

 private func apiRequest(method: Alamofire.Method, ... 

我也遇到过这个问题,因为我已经声明了一些与协议名称相同的名称:

 protocol SomeProtocol { static func someTypeMethod() } protocol SomeProtocol { init(someParameter: Int) } protocol SomeProtocol { var mustBeSettable: Int { get set } var doesNotNeedToBeSettable: Int { get } } 

虽然这个答案解决了构build错误, 在我的情况下,显示警告的文件是在两个不同的框架,所以Xcode不知道在哪里看。 这不是我们内部框架的预期行为,所以我只是删除了我不想要的副本。

你的申请可能在两个或两个以上的地方申报。 错误是说没有确定的方法来使用这个类,因为在它声明的代码中有几个不同的地方。

typesMethod在两个导入的模块中声明。 您必须指定使用该types的模块。 使用Alamofire.Method而不是Method

提示 :如果您经常使用该types,则可以在模块(应用程序)中创build一个types别名:

 typealias Method = Almofire.Method 

这样你就不需要在Almofire.添加前缀Almofire. 任何更多。