Подтвердить что ты не робот

"Метод" неоднозначен для поиска типов в этом контексте, Ошибка в Alamofire

Я использую Alamofire для быстрой работы в сети и запускаю одну странную ошибку. Похоже, мы не можем передать параметр 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)
        }
    }
}
4b9b3361

Ответ 1

Вы должны указать модуль, из которого следует искать тип объекта. Вызовите Alamofire.Method

Ответ 2

Вероятно, существует столкновение имен. Чтобы решить эту проблему, вы можете использовать квалифицированное имя enum (включая имя модуля):

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

Ответ 3

Я также столкнулся с этой проблемой, потому что я объявил несколько одинаковых имен протокола:

protocol SomeProtocol {
   static func someTypeMethod()
}

protocol SomeProtocol {
   init(someParameter: Int)
}

protocol SomeProtocol {
   var mustBeSettable: Int { get set }
   var doesNotNeedToBeSettable: Int { get }
}

Ответ 4

У вас может быть класс, объявленный в двух или более местах вашего приложения. Ошибка говорит о том, что нет никакого убедительного способа использовать этот класс, потому что в объявленном коде есть несколько разных мест.

Ответ 5

Swift 4 и Alamofire 4.7

Замените HTTPMethod на Alamofire.HTTPMethod

Ответ 6

В то время как ответ на это устранил ошибку сборки; в моем случае файл с предупреждением был в двух разных рамках, поэтому Xcode не знал, где искать. Это не было намеченным поведением наших внутренних фреймворков, поэтому я просто удалил копию, которую я больше не хотел.

Ответ 7

Method объявлен в двух импортированных модулях. Вы должны указать модуль для использования типа. Используйте Alamofire.Method вместо Method.

Совет: Если вы часто используете тип, вы можете создать псевдоним типа в своем модуле (приложении):

typealias Method = Alamofire.Method

Таким образом, вам не нужно Alamofire. префикс к Alamofire. больше

Ответ 8

Измените имя типа enum на другое &...

  • Используйте флаг $(inherited) или
  • Удалить настройки сборки из цели.

Target → building settings-> ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES, тип значения Boolean, щелкните другой, измените значение на $ (унаследованное) execute - pod update Done

затем попробуйте запустить ваш проект, ошибка исчезнет! (Я пробовал в моем проекте)

enum 'XYZ'ButtonType {

}

Ответ 9

Я получил эту ошибку, потому что мои имя таблицы базы данных и имя класса модели были одинаковыми... Проблема решена путем переименования имени класса модели.