問題タブ [bridging-header]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
1 に答える
994 参照

swift - Obj-C の Swift ブリッジング ヘッダー

Card.IO経由でインストールしCocoaPodsました。私のワークスペースは正しくセットアップされているように見えますが、Card.IO Objective-Cヘッダー ファイルが配置されていることがわかりますが、メインSwiftプロジェクトでいずれかのCard.IOクラスを参照しようとすると、未解決の識別子エラーが発生します。

編集 私の理解ではXcode、ブリッジングヘッダーが見つかりません:

ドキュメントの状態

[ビルド設定] の [Swift コンパイラ - コード生成] で、Objective-C ブリッジ ヘッダーのビルド設定にブリッジ ヘッダー ファイルへのパスがあることを確認します。ビルド設定で Info.plist パスを指定する方法と同様に、パスはプロジェクトに対して相対的である必要があります。ほとんどの場合、この設定を変更する必要はありません。

これは私には意味がありません - パスをどこに置くべきかわかりませんか? Build Settings > Search Paths > Header Search Paths > Debug & Releaseに以下を追加しました

しかし、これは間違っているようですか?

0 投票する
2 に答える
6816 参照

swift - CocoaPod で Objective-C フレームワークを Swift プロジェクトにインポートすると、ブリッジ ヘッダーに「ファイルが見つかりません」と表示される

私は迅速なプロジェクトを取得し、CocoaPod を使用してサードパーティのリポジトリをインポートしました。私が使用するポッドファイルではuse_frameworks!、リポジトリは使用するフレームワークに組み込まれます。そして、ObjC フレームワークをブリッジ ヘッダーのように、#import ""または#import <>ブリッジ ヘッダーにインポートします。
この状況でプロジェクトを実行すると、うまくいきます。しかし、アーカイブすると、ブリッジヘッダーファイルに「ファイルが見つかりません」と表示されます。

どうすれば問題を解決できますか?

0 投票する
2 に答える
88 参照

ios - ObjC プロジェクトを SalesForce SDK とブリッジすると、SF SDK でカテゴリが見つからないためにクラッシュが発生する

SalesForce SDK を含む Core.proj という iOS プロジェクトがあり、Objective-C で記述されています。このプロジェクトは SF SDK を利用し、バイナリを SF ライブラリにリンクします。私のSFの実装を管理するのに役立つ多くのことを行います。それは私の他のすべての Obj-C プロジェクトに含まれており、それらの中でまったく問題なく動作します。

このプロジェクトを Swift (2.1) で使用するのはこれが初めてです。Xcode 7.1.1 で iOS 9 を使用しています。Core.xcodeproj を Swift プロジェクトに追加しました。次に、ObjC ファイルを作成しました。Xcode は、ブリッジ ヘッダーを作成するかどうかを尋ねます。そうです。Swift-Bridging-Header.h というブリッジ ヘッダーを作成しました。これにより、ブリッジング ヘッダーを介して Core.xcodeproj 内のファイルにアクセスできるようになります。たとえば、ブリッジング ヘッダーから独自のバージョンの Salesforce Authentication Manager にアクセスできます。

アプリのデリゲートで、OAuth を開始したいと思います (ここでは最小限に抑えています)。

完全な開示: ここに表示される各ブロックは、SFOAuthInfo オブジェクトを引数として受け取ります。Swift にこのブロックを読み取らせるために、コピー ファイルに SFOAuthInfo.h を追加する必要がありました。

これですべて正常にコンパイルされますが、タップしてログインして上記のコードを実行すると、次のエラーが発生します。

SF SDK には、UIDevice+SFHardware.h というカテゴリがあります。このカテゴリには、「macaddress」と呼ばれるメソッドがあります。明らかに、このカテゴリを正しく読み取っていません。しかし、なぜ?スタック トレースからわかるように、SF SDK の他のファイルを正しく読み取っています。

これを機能させるために、いくつかのことを試しました。例: iOS - UUID 生成で奇妙な例外がスローされますが、UIDevice+SFHardware.h が使用されます。私はこれを試しました: https://developer.salesforce.com/forums/?id=906F00000009CBvIAM。作業を確認するために、プロジェクトを完全に再構築しました。

この UIDevice+SFHardware.h は、ObjC プロジェクト内にある SF SDK からのみアクセスされるため、このファイルをブリッジに追加する必要はありません。

私は何か間違ったことをしたに違いない。どんな助けでも大歓迎です。

0 投票する
2 に答える
2123 参照

ios - Objective C ファイルに ViewController.swift をインポートする

既存の目的の C プロジェクトで新しい ViewController.swift ファイルを使用しようとしています。

以下は迅速なファイルコードです

以下はObjective Cコードです

Swift コードをインポートできません。私はこれのすべてのステップに従った

どこが間違っているのか教えてください。NSObject クラスにのみ適用されますか。

前もって感謝します

0 投票する
1 に答える
1311 参照

objective-c - Swift はプロトコルの前方宣言を生成しません

obj-c アプリから使用されているフレームワークで定義された迅速なクラスがあります。

生成された -Swift.h ヘッダーには、@objc でマークされた swift クラスが含まれていますが、コンパイルが失敗するプロパティが 1 つあります。

このプロパティは、迅速なコードで次のように定義されています。

したがって、生成された obj-c プロパティは次のようになります

ただし、Xcode はここで「StorageProtocol」記号を受け入れません。これは、前方宣言「@protocol StorageProtocol;」不足している。

このように定義された新しい変数を追加すると:

これらのプロパティを定義するクラスの上に前方宣言が追加され、-Swift.h のコンパイルが成功します。

-Swift.h 生成のバグのように見えますが、ダミーの var を使用せずに前方宣言を強制する別の方法はありますか?

0 投票する
4 に答える
397 参照

c - Swift プロジェクトの C コード

Swift から出力を出力したい C プログラムがあり、スキャン時に Swift を介して入力を与えることができます。そのようなことは可能ですか?私は単純な関数でこれを試してみましたが、うまくいきましたが、他の関数を呼び出す多くの異なる関数でどうすればうまくいきますか?

質問が少し曖昧であることは知っていますが、誰かが私を正しい方向に向けることができますか?

コードの例: