2016-03-28 7 views
0

共通コードを持つ複数のターゲットがある場合、ObjCからSwiftクラスを使用するために必要な迅速なヘッダーの生成に問題があります。複数のターゲットを持つスウィフト生成ヘッダー

My OSX AppMy iOS Appの2つのターゲットを作成しました。これらのターゲットは、ObjCクラスがSwiftクラスを呼び出す共通コードを共有します。

Swift and ObjC in the same projectに記載されているように、#import "My_iOS_App-Swift.h"をObjCクラスに追加し、My iOS Appターゲットからコンパイルできます。

ただし、includeはモジュール名と一致する必要があるため、My OSX Appターゲットからはコンパイルされません。 #import "My_OSX_App-Swift.h"を探していますが、共通コードはそのインクルードを使用していません。

Swift/ObjCを複数のターゲット間で共有されているコードに混在させるにはどうすればよいですか?私は手動で共通のMyApp-Swift.hを使用するようにすべてのターゲットを変更することができますが、それは正しいと感じていないし、他の問題を引き起こす可能性があります。例えば

あなたのモジュール間で同じになるようにビルド設定で製品モジュール名設定を設定し

+1

ポッドまたはプラットフォーム固有のではないコードのためのモジュールを使用してください。これは 'My_iOS_App-Swift.h'や' MyApp-Swift.h'ではありません。それは 'MyLibrary-Swift.h'で行うべきです – nhgrif

+0

はい、それは意味がありますが、私はこのプロジェクトを継承しました。生成された-Swift.hの名前を手動で変更して、各ターゲットが問題を起こさずに同じものを使用できるようにすることはできますか?図書館を使用するプロジェクトを再構築することは、現時点ではあまりにも多くの変更をもたらす可能性があります。 (私はあなたの答えを受け入れるが、コメントからすることはできません) –

答えて

2

:$(PROJECT_NAME)

それともなどの異なるターゲットのための時計の拡張子を持っている場合は、固定名を使用:Main_AppおよびWatchkit

これにより、生成される### - Swift.hファイルがすべてのモジュールで同じ名前になります。これにより、プリプロセッサマイクロを追加/チェックする必要もなくなります。

から:Objective C to Swift header file with multiple targets

関連する問題