Ответ 1
Вы должны указать модуль, из которого следует искать тип объекта.
Вызовите Alamofire.Method
Я использую 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)
}
}
}
Вы должны указать модуль, из которого следует искать тип объекта.
Вызовите 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 }
}
У вас может быть класс, объявленный в двух или более местах вашего приложения. Ошибка говорит о том, что нет никакого убедительного способа использовать этот класс, потому что в объявленном коде есть несколько разных мест.
Swift 4 и Alamofire 4.7
Замените HTTPMethod
на Alamofire.HTTPMethod
В то время как ответ на это устранил ошибку сборки; в моем случае файл с предупреждением был в двух разных рамках, поэтому Xcode не знал, где искать. Это не было намеченным поведением наших внутренних фреймворков, поэтому я просто удалил копию, которую я больше не хотел.
Method
объявлен в двух импортированных модулях. Вы должны указать модуль для использования типа. Используйте Alamofire.Method
вместо Method
.
Совет: Если вы часто используете тип, вы можете создать псевдоним типа в своем модуле (приложении):
typealias Method = Alamofire.Method
Таким образом, вам не нужно Alamofire.
префикс к Alamofire.
больше
Измените имя типа enum на другое &...
$(inherited)
илиTarget → building settings-> ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES, тип значения Boolean, щелкните другой, измените значение на $ (унаследованное) execute - pod update Done
затем попробуйте запустить ваш проект, ошибка исчезнет! (Я пробовал в моем проекте)
enum 'XYZ'ButtonType {
}
Я получил эту ошибку, потому что мои имя таблицы базы данных и имя класса модели были одинаковыми... Проблема решена путем переименования имени класса модели.