English UI is enabled. Article bodies are currently written in Japanese. English summaries and navigation are available while full article translations are prepared.

Swift エラー 解決の基本チェックリスト

Swift エラー 解決の基本チェックリスト

導入

Swift のエラーは、メッセージを一行だけ見ると難しく感じます。ただ、多くの場合は「型が合っていない」「Optional を安全に扱えていない」「Xcode の対象ターゲットや依存関係がずれている」のどれかから切り分けられます。

この記事では、Swift のエラーで手が止まったときに、最初に確認する順番をまとめます。

この問題の概要

Swift は型の安全性が高い言語なので、曖昧な値や危険な変換をコンパイル時に止めます。そのため、初心者のうちはエラーが多く見えますが、エラー文はかなり具体的です。

まずは Xcode の Issue Navigator で一番上のエラーを開き、表示された行と型を確認します。後ろに続くエラーは、最初の一件が原因で連鎖していることがあります。

検証環境

  • macOS: Xcode が動作する環境
  • Xcode: App Store または Apple Developer から入手した Xcode
  • Swift: Xcode 同梱の Swift
  • 対象: iOS App / SwiftUI または UIKit

再現手順

Swift エラーを切り分けるときは、次の順で再現条件を小さくします。

  1. Xcode の Issue Navigator で一番上のエラーを開く
  2. エラー行の前後だけを読む
  3. 変数・関数・戻り値の型を確認する
  4. Optional の値を強制アンラップしていないか確認する
  5. 新規プロジェクトや小さいサンプルでも再現するか確認する

よくある原因

  • StringString? のように Optional の有無が違う
  • IntString のように型が合っていない
  • SwiftUI の View の戻り値が条件分岐で揃っていない
  • ファイルが正しい target に含まれていない
  • Swift Package Manager の依存関係が壊れている
  • Xcode の DerivedData が古い状態を持っている

解決手順

1. エラー文をそのまま読む

まずはエラー文を短く分解します。

Cannot convert value of type 'String?' to expected argument type 'String'

この場合は、String?String として渡そうとしていることが原因です。Optional を if letguard let?? で処理します。

2. 型を確認する

Xcode では Option キーを押しながら変数名をクリックすると、型の情報を確認できます。関数の引数、戻り値、プロパティの型を見比べます。

let name: String? = "Acia"

if let name {
    print(name)
}

3. 一番上のエラーから直す

複数のエラーが出ている場合でも、最初の一件だけを直すと後続が消えることがあります。下から順に触るより、Issue Navigator の上から順に確認する方が戻りやすいです。

4. Xcode 側の状態をリセットする

コードが正しいのにエラーが残る場合は、以下を試します。

Product > Clean Build Folder
File > Packages > Reset Package Caches
File > Packages > Resolve Package Versions

それでも直らない場合は、DerivedData を削除してから再ビルドします。

実際に効いた修正

Swift のエラー対応では、最初に大きく直すより、小さく戻せる確認を積む方が安定します。特に Optional、型変換、target membership、Package の再解決を順番に見ると、原因を絞りやすいです。

公式ドキュメント・参考

それでも直らない場合

  • エラー文全文で検索する
  • 新規プロジェクトで同じコードだけを試す
  • 依存パッケージを一つずつ外して再ビルドする
  • Apple Developer Forums で同じエラーが報告されていないか確認する

まとめ

  • Swift エラーは、一番上のエラーと型の不一致から確認します。
  • Optional、型変換、target、Package、DerivedData の順で切り分けると戻りやすいです。
  • いきなり大きく直さず、小さい再現コードで原因を確かめると解決が早くなります。
← 記事一覧に戻る