1

Connector.m (Objective-C で記述) という名前のコネクタがあるとします。そして、Connector.swift という名前の、Swift を使用して作成された新しいコネクタを作成したいと思います。Swift からすべての変数とメソッドにアクセスしたいと考えています。ブリッジング ヘッダーを作成し、コネクタのヘッダー ファイルのインポートを書き込みました。しかし、Objective-C クラスのどのグローバル変数にもアクセスできません。

Connector.m

NSString * const kHTTP_METHOD_GET = @"GET";

Connector.swift

public class Connector: NSObject {

    var parentConnector : Connector

    override init() {
        self.parentConnector = Connector
    }

    func test() {
        print(parentConnector.kHTTP_METHOD_GET) //--> ERROR : Value of type 'Connector' has no member 'kHTTP_METHOD_GET'
    }

}

これを行うことは可能ですか?ありがとう。

4

4 に答える 4

2

このようなヘッダーファイルがあることを確認してください...

{project-name}-Bridging-Header.h

クラス ファイルを Bridging-Header.h に追加します。

#import "Connector.h"

そして、以下のコードを Connector.hファイルに入れます..Bridging-Header.hではヘッダーファイルのみをインポートするためです

NSString * const kHTTP_METHOD_GET = @"GET";

@interface スコープの上に..

于 2016-01-21T05:46:17.190 に答える
1

Connector.h に次の行を追加します。

extern NSString * const kHTTP_METHOD_GET;

ブリッジング ヘッダー ファイルに Connector.h をインクルードします。

于 2016-01-21T04:48:40.567 に答える
0

これはAdapter Patternの良いユースケースのように思えます。ただし、Objective-C コードには簡単にアクセスできるはずです。

ブリッジング ヘッダー ファイルが次のように命名されていることを確認します。

{your-project-name}-Bridging-Header.h

ブリッジング ヘッダー内に以下を追加します。

#import "Connector.m"

次に、コンパイラがブリッジ ヘッダーを認識していることを確認する必要があります。

ルート プロジェクトをクリック > ターゲット アプリを選択 > ビルド設定

次に、これが表示されるまで下にスクロールします。

ここに画像の説明を入力

ブリッジ ヘッダーがリストされていることを確認し、ビルドすると、Objective-C コードにアクセスできるはずです。

于 2016-01-21T02:26:31.273 に答える