遭遇したエラー
先日 SwiftUIのチュートリアルの学習をしていた時に、今回のエラーに遭遇しました。
観光名所リストを作る際に必要なJSONファイルをModelData.swift
から呼びだすために
var landmarks:[Landmark] = load(landmarkData.json)
と打ち込むと、
Cannnot find 'load' scope.
と表示されて Build に失敗しました。
↓今回学習したチュートリアル
↓今回作成したアプリを動作させたものです(アプリアイコンは自作です)
試してみたこと
- JSON ファイルを一旦削除して、もう一度プロジェクト内にコピーする
- 手元の Xcode のバージョンがチュートリアルより古かったためバージョンを引き上げ
- エラーが起きたコードをチュートリアルからコピペ
- ディレクトリを変えて JSON 再配置
1. - 一度プロジェクトを Clean してから再 Build
- Target Membershipにチェックマークがついているか確認
- そもそもプロジェクト内にコピーされているかを再確認
しかし、どれを試してもビルドが通ることはありませんでした。
解決した方法
これらの方法を諦めて、JSONファイルをプロジェクトに追加する前の状態が保存されたブランチから新しくブランチを切り出して、再び最初からやり直しました。
すると
エラーが消滅し、Build に成功しました。
なぜそうなったのか、先ほど Build に失敗したブランチと今回成功したブランチのコードをGithub 上で比べてみましたが、ModelData.swift
でもプロジェクトファイルにも特に違いがありませんdした。
結論
どんなにコードを眺めても、プロジェクト設定を見ても原因がわからないときは、思い切って状態を巻き戻すか新しくプロジェクトを作ってやり直した方がいいかもしれません。
別で見つけた課題
2つ目の名所の詳細画面で本来は戻るボタンが < Landmarks となるはずが、なぜかこの画面だけ Back となってしまってます。
また後ほど、修正予定です。
問題の画面 | 他の名所画面 |
---|---|