1. ホーム
  2. xcode

[解決済み] Swift で、内部型であり、同じモジュールに存在するにもかかわらず、「未宣言の型を使用」する

2022-02-10 18:22:59

質問

自分のモジュールに型があります。

import Cocoa

class ColoredDotView : NSView {
   ...
}

様々なクラスで問題なく使用されています。

class EditSubjectPopoverController : NSObject {

    @IBOutlet internal var subjectColorDotView : ColoredDotView!
    ...
}

しかし 何らかの理由で で使用する場合、1つの 特定の クラスで、コンパイルエラーが発生します。

class EditTaskPopoverController : NSObject {

    @IBOutlet internal var lowPriorityDotView : ColoredDotView! // Error here
    @IBOutlet internal var medPriorityDotView : ColoredDotView! // And here...
    @IBOutlet internal var highPriorityDotView : ColoredDotView! // And here...
    ...
}

コンパイルエラーは

EditTaskPopoverController.swift:15:49: 非宣言型の使用 'ColoredDotView'です。

というのは理解できない。このファイルでは最初のコンパイルエラーで、残りのエラーはすべて最初のエラーの症状です。さらに、このファイルには 他のファイル というコンパイルエラーが発生します。同じモジュールにあるファイルなのに、なぜ型が未宣言なのか理解できません。

プロジェクトのクリーニング、ビルドフォルダのクリーニング、Xcodeの再起動を試しましたが、効果がありません。どのような不手際が原因で undeclared type のコンパイラーエラーが発生する可能性はありますか?

解決方法は?

ふぅ、やっと診断がついたよ。 なんとなく そのため、問題のSwiftファイル EditTaskPopoverController.swift が2つの異なるビルドフェーズにありました。

にあった。 Compile Sources は、他のすべてのSwiftファイルと一緒に適切に配置されていましたが、それは また は、非常に奇妙な理由で Copy Bundle Resources フェーズでも、すべての XIB と画像リソースと一緒に表示されます。

どうしてそうなったのかわかりませんが、余分なビルドフェーズからそれを削除することで問題が解決しました。