0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Swiftでの初期化エラーの解決法:「Extra argument in call」

Posted at

はじめに

Swiftでクラスや構造体のインスタンスを作成する際、しばしば遭遇する「Extra argument in call」というコンパイルエラーについて、その原因と解決法をわかりやすく解説します。


エラーの原因:悪い例の提示

状況:
SwiftUIでのアプリ開発中、Matchという構造体のインスタンスを作成しようとしたところ、「Extra argument 'matchDate' in call」というエラーが発生。

コード例:

struct Match: Identifiable, Codable {
    var id = UUID().uuidString
    var matchDate: Date
    // 他のプロパティ
    init(date: Date, teamWhite: String, teamBlack: String) {
        self.matchDate = date
        // 初期化の実装
    }
}

class MatchSetupViewModel: ObservableObject {
    func saveMatchDetails() {
        let match = Match(matchDate: Date(), teamWhite: "White", teamBlack: "Black")
        // 保存ロジック
    }
}

問題点:
Matchのイニシャライザはdateという引数を期待しているが、saveMatchDetailsメソッドではmatchDateという引数名を使用している。


解決方法:良い例の提示

修正後のコード:

class MatchSetupViewModel: ObservableObject {
    func saveMatchDetails() {
        let match = Match(date: Date(), teamWhite: "White", teamBlack: "Black")
        // 保存ロジック
    }
}

解説:
Matchのイニシャライザで要求されている引数名に合わせて、MatchSetupViewModel内の関数でインスタンスを作成する際の引数名を修正。


まとめ

型だけじゃなく変数名を合わせることが大事!

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?