'Method' is ambiguous for type lookup in this context, Error in Alamofire

SwiftAlamofire

Swift 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]

enter image description here

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.

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionRavi PrakashView Question on Stackoverflow
Solution 1 - SwiftharpreetSinghView Answer on Stackoverflow
Solution 2 - SwiftSulthanView Answer on Stackoverflow
Solution 3 - SwiftylgwhyhView Answer on Stackoverflow
Solution 4 - SwiftmarkcadagView Answer on Stackoverflow
Solution 5 - SwiftMarián ČernýView Answer on Stackoverflow
Solution 6 - SwiftnitsyrkView Answer on Stackoverflow
Solution 7 - SwiftBrooks HanesView Answer on Stackoverflow
Solution 8 - SwiftdimohamdyView Answer on Stackoverflow
Solution 9 - SwiftbittuView Answer on Stackoverflow
Solution 10 - Swiftvimal patelView Answer on Stackoverflow
Solution 11 - SwiftAndrew LeeView Answer on Stackoverflow