Swiftのネットワーク処理にAlamofireを使用していますが、1つの奇妙なエラーが発生します。合格できないようです 方法 パラメータとして列挙します。
[メソッドパラメータにエラーがあります]
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
に置き換えます
アプリケーションの2つ以上の場所でクラスを宣言できます。エラーは、宣言されたコードにいくつかの異なる場所があるため、このクラスを使用する決定的な方法がないことを言っています。
これに対する答えはビルドエラーを修正しましたが、私の場合、警告を表示するファイルは2つの異なるフレームワークにあったため、Xcodeはどこを見ればよいかわかりませんでした。これは、内部フレームワークの意図した動作ではなかったため、不要になったコピーを単に削除しました。
データベーステーブル名とモデルクラス名が同じであるため、このエラーが発生しました...モデルクラス名を変更することで問題を解決しました。
列挙型名を別の&...に変更します.
$(inherited)
フラグを使用する、またはターゲット->建物の設定-> ALWAYS_EMBED_Swift_STANDARD_LIBRARIES、値のタイプはブール値で、もう一方をクリックして、値を$(継承)に変更して実行します-ポッドの更新完了
その後、プロジェクトを実行しようとすると、エラーが消えます! (私は自分のプロジェクトで試しました)
列挙型 'XYZ'ButtonType {
}
タイプMethod
は、インポートされた2つのモジュールで宣言されています。タイプを使用するモジュールを指定する必要があります。 Method
の代わりにAlamofire.Method
を使用します。
Tip:型を頻繁に使用する場合、モジュール(アプリケーション)で型エイリアスを作成できます。
typealias Method = Alamofire.Method
そうすれば、タイプの前にAlamofire.
を付ける必要がなくなります。