2016-09-13 6 views
2

swiftからobjective-cメソッドを呼び出そうとするとエラーが発生します。 私のObjective-Cの.hのクラス:Swiftエラーからのobjective-cメソッドの呼び出し

@class myType; 
@interface myClass : NSObject 
- (myType *)myMethod; 

その後、私は(私はタイプのMyClassのanObjectを宣言している)オブジェクトフォームのMyClassを作成し、迅速にMyMethodはを呼び出そうとします:

let a = anObject.myMethod(); 

を私は タイプ 'myClass'の値にメンバー 'myMethod'がありません myTypeを別のものに変更すると、エラーはなくなります。だから、迅速にMYTYPEを認識しないの問題でなければなりません。..

私は任意のヘルプ

+0

'@class myType;'で十分ではないため、Swiftはそのクラスのインタフェースを知る必要があります。 –

+0

私に例を教えてもらえますか? – Besat

+0

'@interface myType .... @ end'を含むヘッダファイルは、ブリッジヘッダファイルからインクルードする必要があります。 –

答えて

1

私の本当の問題が判明しました。 私は単純に得られたデータを削除する必要がありました:

  • ウィンドウ - >プロジェクト - >得られたデータ - >削除
  • クリーンプロジェクト
  • プロジェクト
を構築するXcodeの
  • オープンXcodeの
  • を終了します

    明らかに、私はこれらのステップをすばやく使う必要があります。

  • 2
    @class myType; 
    

    に感謝し、そのクラスの唯一の「前方宣言」です。 Objective-Cのまたはスウィフトのいずれかから

    - (myType *)myMethod; 
    

    メソッドを呼び出すために、コンパイラは、そのクラスの 実際のインタフェース宣言を知る必要があります。だから、「myType.h」または

    @interface myType : NSObject 
    // ... 
    @end 
    

    が含まれているものは何でも ファイルには、ブリッジングヘッダファイルからインクルードする必要があります。

    備考:クラス名は大文字で始まる必要があります。

    関連する問題