"Метод" неоднозначен для поиска типов в этом контексте, Ошибка в Alamofire
Я использую Alamofire для быстрой обработки сети и столкнулся с одной странной ошибкой. Кажется, мы не можем передать метод 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)
}
}
}
7 ответов
Вы должны указать модуль для поиска типа объекта. Вызов 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 }
}
Если эта ошибка возникла при использовании "Moya" и при соединении инфраструктуры a c, исправил ее, неявно добавив Moya.Method
модуль.
var method: Moya.Method {
switch self {
case .login: return .post
case .register: return .post
}
}
Тип Method
объявлен в двух импортированных модулях. Вы должны указать модуль для использования типа. использование Alamofire.Method
вместо Method
,
Совет: Если вы часто используете тип, вы можете создать псевдоним типа в своем модуле (приложении):
typealias Method = Alamofire.Method
Таким образом, вам не нужно будет префикс типа с Alamofire.
больше
Хотя ответ на это исправил ошибку сборки; в моем случае файл с предупреждением находился в двух разных структурах, поэтому XCode не знал, где искать. Это не было предназначением наших внутренних фреймворков, поэтому я просто удалил копию, которую больше не хотел.
Swift 4 и Alamofire 4.7
замещать HTTPMethod
в Alamofire.HTTPMethod
У вас может быть класс, объявленный в двух или более местах в вашем приложении. Ошибка говорит о том, что не существует окончательного способа использования этого класса, потому что в коде есть несколько разных мест, где он объявлен.
Мне удалось решить проблему, удалив папку Alamofire в проекте pods вручную. Затем я выполняю "установку модуля", чтобы переустановить отсутствующие модули.
После этого в папке Alamofire будет значительно меньше файлов.
Я получил эту ошибку, потому что имя моей таблицы базы данных и имя класса модели были одинаковыми... Проблема решена путем переименования имени класса модели.
Измените имя типа enum на другое &...
- Использовать
$(inherited)
флаг или - Удалить настройки сборки из цели.
Цель - > настройки здания- >ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES, тип значения Boolean, щелкните другой, измените значение на $(унаследованное) execute - обновление pod Выполнено
затем попробуйте запустить ваш проект, ошибка исчезнет! (Я пробовал в моем проекте)
enum 'XYZ'ButtonType {
}