0
0
お題は不問!Qiita Engineer Festa 2024で記事投稿!
Qiita Engineer Festa20242024年7月17日まで開催中!

【Xcode】Target Membershipにチェックされているのに Cannot find 'load' in scope と出る

Posted at

遭遇したエラー

先日 SwiftUIのチュートリアルの学習をしていた時に、今回のエラーに遭遇しました。

観光名所リストを作る際に必要なJSONファイルをModelData.swift から呼びだすために
var landmarks:[Landmark] = load(landmarkData.json)
と打ち込むと、

Cannnot find 'load' scope. と表示されて Build に失敗しました。

↓今回学習したチュートリアル

↓今回作成したアプリを動作させたものです(アプリアイコンは自作です)

試してみたこと

  1. JSON ファイルを一旦削除して、もう一度プロジェクト内にコピーする
  2. 手元の Xcode のバージョンがチュートリアルより古かったためバージョンを引き上げ
    1. チュートリアルには 15 or later と記載されていた
    2. 手元では 14 になっていたので引き上げ
  3. エラーが起きたコードをチュートリアルからコピペ
  4. ディレクトリを変えて JSON 再配置
    1.
  5. 一度プロジェクトを Clean してから再 Build
  6. Target Membershipにチェックマークがついているか確認
  7. そもそもプロジェクト内にコピーされているかを再確認
    1. クリック拡大表示推奨

しかし、どれを試してもビルドが通ることはありませんでした。

解決した方法

これらの方法を諦めて、JSONファイルをプロジェクトに追加する前の状態が保存されたブランチから新しくブランチを切り出して、再び最初からやり直しました。

すると

エラーが消滅し、Build に成功しました。

なぜそうなったのか、先ほど Build に失敗したブランチと今回成功したブランチのコードをGithub 上で比べてみましたが、ModelData.swift でもプロジェクトファイルにも特に違いがありませんdした。

結論

どんなにコードを眺めても、プロジェクト設定を見ても原因がわからないときは、思い切って状態を巻き戻すか新しくプロジェクトを作ってやり直した方がいいかもしれません。

別で見つけた課題

2つ目の名所の詳細画面で本来は戻るボタンが < Landmarks となるはずが、なぜかこの画面だけ Back となってしまってます。
また後ほど、修正予定です。

問題の画面 他の名所画面
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