今回SwiftとObjective-Cが混在しているプロジェクトを開発中に
Swiftファイルを開いた時にObjective-Cで実際に定義されているクラスが見つからないというワーニングが表示された。
ビルドするとエラーが一旦消えるが該当のSwiftファイルを開くと再度エラーが表示されるという謎エラー解消方法の備忘録_φ(・_・ )
発生したエラー
Cannot find type ‘Class’ in scope
翻訳
スコープ内で型 ‘Class’ が見つかりません。
原因
Xcodeの「Precompile Bridging Header」という設定が関係していましたみたいです。
「Precompile Bridging Header」とは、Objective-CとSwiftの混在したプロジェクトで使用されるビルド設定の1つで、SwiftでObjective-Cのコードを使用する場合、プロジェクトに「Bridging Header(ブリッジングヘッダー)」ファイルを作成する必要があります。「Bridging Header」は、Objective-CのヘッダーファイルをSwiftから参照できるようにするためのもので、Objective-CとSwiftの間で型や関数などを相互に利用できるようにします。
「Precompile Bridging Header」は、この「Bridging Header」ファイルを事前にコンパイルするかどうかを指定するビルド設定です。
デフォルトでは、この設定が「Yes」になっており、Bridging Headerファイルが事前にコンパイルされる際の不具合のようです。
解決手順
・以下の手順で「Precompile Bridging Header」の値を「No」に設定する
この設定をNoにするとビルド時間が長くなる可能性があるのでスルーするかエラーを消すかはお好みで、、
参考サイト
https://blog.uso400.net/cannot-find-type-aclass-in-scope/
https://developer.apple.com/forums/thread/691672