2016-07-10 10 views
2

SwiftとObjective Cをうまく組み合わせていますが、Objective CのHEADERファイルからSwiftクラスへのアクセスに問題があります.mファイルで正常に実行できます。Objective CヘッダーのSwiftクラスへのアクセス

.hファイル内で、 "Appname-Swift.h"という形式のXcode生成ファイルをインポートします。しかし、そうすることで、ファイルが見つからないというメッセージが表示されます。 .mファイルでこの同じインポートを問題なく行うことができます。ただし、公開APIを使用してアクセスする必要があるSwiftクラスを参照すると、.hファイルにそのファイルが必要です。

Objective Cの.h部分からSwiftクラスを使用するにはどうすればよいですか?

例:上記

#import <UIKit/UIKit.h> 
#import "MyApp-Swift.h" 

@interface SelectedContactsVC : UIViewController 

@property (nonatomic,strong) MapVC *mapVC; 

@end 

MapVCはスイフトクラスです。

答えて

3

#import "MyApp-Swift.h"を.mファイルに移動します。

そして、あなたの.hファイルを作るなど:

#import <UIKit/UIKit.h> 
@class MapVC; 

@interface SelectedContactsVC : UIViewController 

@property (nonatomic,strong) MapVC *mapVC; 

@end 

それは一種の相互依存関係の事多分、Objective-Cのヘッダからの輸入だ場合スウィフトは、 "MyAppの-Swift.h" を生成することはできません。

+0

ありがとうございました。このように "@class"を前方宣言のように追加していますか? – C6Silver

+2

はい、シンボルは実際にはクラスであるが、他の情報は与えないことをコンパイラーに教えています。ほとんどの場合、相互依存関係を回避するのに十分役立ちます。 – OOPer

+0

恐ろしい!まさに私が探していたものです。ありがとう! – CalZone

関連する問題