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 エラーを切り分けるときは、次の順で再現条件を小さくします。
- Xcode の Issue Navigator で一番上のエラーを開く
- エラー行の前後だけを読む
- 変数・関数・戻り値の型を確認する
- Optional の値を強制アンラップしていないか確認する
- 新規プロジェクトや小さいサンプルでも再現するか確認する
よくある原因
StringとString?のように Optional の有無が違うIntとStringのように型が合っていない- SwiftUI の
Viewの戻り値が条件分岐で揃っていない - ファイルが正しい target に含まれていない
- Swift Package Manager の依存関係が壊れている
- Xcode の DerivedData が古い状態を持っている
解決手順
1. エラー文をそのまま読む
まずはエラー文を短く分解します。
Cannot convert value of type 'String?' to expected argument type 'String'
この場合は、String? を String として渡そうとしていることが原因です。Optional を if let、guard 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 の順で切り分けると戻りやすいです。
- いきなり大きく直さず、小さい再現コードで原因を確かめると解決が早くなります。