[解決済み] Swift - 呼出しの余分な引数
2022-02-28 16:28:45
質問
ViewControllerクラスで宣言された関数をDetailViewControllerクラスから呼び出そうとしています。
デバッグしようとすると、「Extra Argument in call"」というエラーがポップアップ表示されます。
ViewControllerクラスで。
func setCity(item : Cities, index : Int)
{
citiesArray!.removeObjectAtIndex(index)
citiesArray!.insertObject(item, atIndex: index)
}
detailViewControllerクラスで
// city of type Cities
ViewController.setCity(city ,5 ) //Error: "Extra argument in call"
これはとても簡単なことなのに、私は困惑しています。
どのように解決するのですか?
呼び出しが正しくても、引数の型が関数宣言と一致しない場合、 "Extra argument in call"が出ることがあるようです。 ご質問の内容からすると、インスタンスメソッドをクラスメソッドとして呼び出そうとしているように見えますが、これはそのようなケースの一つであると私は考えています。 例えば、このコードは全く同じエラーを出します。
class Foo {
func name(a:Int, b: Int) -> String {
return ""
}
}
class Bar : Foo {
init() {
super.init()
Foo.name(1, b: 2)
}
}
あなたのコードでは、setCityの宣言を次のように変更することで解決できます。
class func setCity(...)
(コメントで言及); これで
ViewController.setCity
の呼び出しは期待通りに動作しますが、あなたが欲しいのは
setCity
はインスタンスの状態を変更するように見えるので、インスタンスメソッドである必要があります。 おそらく、ViewController クラスのインスタンスを取得して、それを使って setCity メソッドを呼び出したいのでしょう。 上のコード例で説明すると、Bar をこのように変更することができます。
class Bar : Foo {
init() {
super.init()
let foo = Foo()
foo.name(1, b: 2)
}
}
ほら、エラーが出なくなった。
関連
-
[解決済み] スウィフト 2: !, ?-" オプション型「...」の値がアンラップされていない"
-
[解決済み] dispatch_after - GCD in Swift?
-
[解決済み] Swiftの辞書にキーが含まれているかどうかを判断し、その値を取得する。
-
[解決済み] Swiftで乱数を生成する方法とは?
-
[解決済み] SwiftからObjective-Cのコードを呼び出すにはどうしたらいいですか?
-
[解決済み] Swiftで#pragmaマーク?
-
[解決済み] Swift Betaのパフォーマンス:配列のソート
-
[解決済み] Swiftでindexとelementでループを反復させる方法
-
[解決済み] Swiftの@selector()?
-
[解決済み】Swiftで辞書に要素を追加する方法は?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン