'Method' is ambiguous for type lookup in this context, Error in Alamofire
SwiftAlamofireSwift Problem Overview
I am using Alamofire for network handling in swift and run into one weird error. It seems like we can't pass Method enum as parameter.
[Error is on Method parameter]
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)
}
}
}
Swift Solutions
Solution 1 - Swift
You have to specify the module from which to lookup object type.
Call Alamofire.Method
Solution 2 - Swift
There is probably a name collision. To solve it, you can use the qualified name of the enum
(including the module name):
private func apiRequest(method: Alamofire.Method, ...
Solution 3 - Swift
I have also encountered this problem, because I have declared a number of the same name of the protocol:
protocol SomeProtocol {
static func someTypeMethod()
}
protocol SomeProtocol {
init(someParameter: Int)
}
protocol SomeProtocol {
var mustBeSettable: Int { get set }
var doesNotNeedToBeSettable: Int { get }
}
Solution 4 - Swift
Had this error conflict when using "Moya" and when bridging a c framework, fixed it by implicitly adding Moya.Method
module.
var method: Moya.Method {
switch self {
case .login: return .post
case .register: return .post
}
}
Solution 5 - Swift
The type Method
is declared in two imported modules. You have to specify the module from which to use the type. Use Alamofire.Method
instead of Method
.
Tip: If you are using the type often, you can create a type alias in your module (application):
typealias Method = Alamofire.Method
That way you will not need to prefix the type with Alamofire.
any more.
Solution 6 - Swift
While the answer to this did fix the build error; in my case, the file showing the warning was in two different frameworks so Xcode did not know where to look. This was not the intended behavior of our internal frameworks so I simply removed the copy I no longer wanted.
Solution 7 - Swift
You may have a class declared in two or more places in your application. The error is saying that there is no conclusive way to use this class because there are a couple different places in the code it is declared.
Solution 8 - Swift
Swift 4 and Alamofire 4.7
Replace HTTPMethod
to Alamofire.HTTPMethod
Solution 9 - Swift
I got this error because my database table name and model class name was same...Issue resolved by renaming model class name.
Solution 10 - Swift
Change the enum type name to different &...
- Use the
$(inherited)
flag, or - Remove the build settings from the target.
Target - > building settings- >ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES, Value type is Boolean, click on the other, change the value to $(inherited) perform - pod update Done
then try to run Your project , error will gone ! (I have tried in my project)
enum 'XYZ'ButtonType {
}
Solution 11 - Swift
I managed to fix the problem by deleting the Alamofire folder in the pods project manually. Then, I do a "pod install" to reinstall the missing pods.
There are significantly less files in the Alamofire folder after doing this.