web-dev-qa-db-ja.com

私のSwiftクラスの拡張子が定義ファイルの外に表示されないのはなぜですか?

CoreDataモデル用にXcodeで生成されたNSManagedObjectクラスがあります。

@objc(SomeClass) class SomeClass : NSManagedObject { /* ... */ }

これは、「SomeClass.Swift」という名前のファイルで定義されています。このクラスを拡張したいので、「SomeClassExtension.Swift」を作成しました。私はこのように拡張機能を定義します:

extension SomeClass {
    class func typeMethod1() {}
    func instanceMethod2() {}
}

これらの拡張メソッドは、この定義ファイル内で使用できますが、ファイルの外部では表示されません。この問題の原因は何ですか?

22
Richard Dong

新しいファイル(SomeClassExtension.Swift)が正しいターゲットに含まれていなかったようです。 Xcodeでファイルを選択し、[ファイルインスペクター]を開いて、ファイルのターゲットメンバーシップを再確認します([表示]メニュー> [ユーティリティ]> [ファイルインスペクターの表示])。 Target Membershipの見出しの下で正しいターゲットがチェックされていることを確認してください。

56
Nate Cook

これらのメソッドにパブリック修飾子はありません。

1
Enrico Granata