Objective-Cで記述されたiOSプロジェクトがあります。プロジェクトでSwiftクラスを作成しました。SwiftでObjective-Cにアクセスするためのブリッジングヘッダーファイルが正常に生成され、正常に動作します。
私の問題は逆です。 Swift Objective-Cコードのクラスをインポートします。
Xcodeでは、ターゲット->ビルド設定-> Swift Compilerセクション、私はObjective-C Generated Interface Header Name
フィールドに値myModule-Swift.h
、しかし、このヘッダーをobjective-cクラスにインポートすると:
#import "myModule-Swift.h"
コンパイラエラーが発生します。
myModule-Swift.h file not found
プロジェクトでも、このファイルは見つかりません。この問題を解決するにはどうすればよいですか?
私のXcodeバージョンは6.4です
#import "YourModule-Swift.h"
(例、CData
という名前のプロジェクト)
ステップ1と同じで、ビルド設定に移動して「モジュールの定義」を検索し、両方の値をYESに設定します
.Swift
ファイルでNSObject
を拡張するクラスを作成します
プロジェクトを再度ビルドします
YourModule-Swift.h
ファイルを.mファイルにインポートします(大文字と小文字が区別されることに注意してください、Mymodule
!== MyModule
)
OMG ..実際のインポート文は「class-Swift.h」ではなく「projectname-Swift.h」でした
ビルド設定-> Swift Compiler Code Generation-> Objective-C Generated Interface Header Nameの下を見ると、ファイルの名前を見つけることができます
SwiftソースをGUIにドラッグしたとき、ファイルは生成されませんでした。右クリックして[ファイルを「プロジェクト」に追加するときのみ。
この問題に何時間も費やしてもまだ解決されない理由を誰かが疑問に思っている場合は、アプリではなくframeworkを実際に開発している私の状況に似ているかもしれません。
このような場合、Objective-C Generated Interface Headerのインポート文の形式は次のとおりです。
#import <ModuleName/ModuleName-Swift.h>
ダニエルクロムスへの私の答え:
-Swift.hヘッダーをヘッダーに追加しないでください。動作しているように見えても。 .mファイルのみにインポートを追加してください!
ヘッダーSwiftクラスで使用する場合、@ interfaceの前に@class swiftclassnameを使用して前方宣言を行います
その後、コードに実際のエラーが表示されます。
私はこれを長い間積み重ねました。私の場合、ターゲット名はダッシュをターゲット名の一部として使用する「my-app」のようなものです。 #import "my-app-Swift.h"
を試みましたが、Xcodeがエラーを出し続けました。
「DerivedData」フォルダーの下を掘ってみると、「my_app-Swift.h」が見つかりました。したがって、ターゲット名に興味深い文字を使用している場合。これらをアンダースコア_
に置き換えてみてください。
昨日同じ問題にぶつかり、何時間も無駄に修正するために働いた。他の人は私と同じ船に乗っていた可能性があります。上記のすべての手順を実行しましたが、何も機能しませんでした。
鉱山破壊の原因は、プロジェクト全体のプロジェクト名のアーティファクトが原因でした(以前の名前の不適切な変更による)。
上記の手順がすべて失敗した場合は、Xcodeが何かをリセットできるように、プロジェクトの名前を変更することをお勧めします...これで問題は解決しました。そうすることは魅力的でした!