2016-03-24 10 views
0

XcodeのAdd files...を使用してSwiftプロジェクトにObj-Cコード(優秀Expressions)を追加しましたが、ブリッジヘッダーを作成するかどうか尋ねませんでした。だから私はObj-Cコードのグループで自分自身を作って、#importに必要な単一のヘッダを編集し、ビルド設定のSwiftコンパイラでファイルが参照されていることを確認しました。私はObj-Cコードを見て、.mファイルがターゲットに入っていることを確認しました。それらはコンパイルソースにリストされています。問題のSwiftでObj-Cクラス拡張を使用していますか?

ヘッダには、これを含んでいます。テーマに、いくつかのバリエーションと一緒に

let result = NSNumber.numberByParsingExpression(f.1) 

@interface NSNumber (Expression) 
+ (NSNumber *)numberByParsingExpression:(NSString *)expression; 
+ (NSNumber *)numberByParsingExpression:(NSString *)expression withVariables:(NSDictionary *)varDictionary; 
@end 

は今、私はthis postと同じ基本的な構文を使用してこのコードを呼び出すようにしようとしています。コンパイルされません "タイプ 'NSNumber'にはメンバー 'numberByParsingExpression'はありません。

私はここで一歩を欠場しましたか?

答えて

1

これはXcodeのpeccadilloです。

あなたはグループ内のヘッダファイルを作成すると、それは実際にソースフォルダで物理的にそれを配置します。だから、私の場合は、ヘッダーは/project/subproject/.hに作成されましたが、Xcodeの中に/project/.hという基本フォルダの一部として登場しました。

実際には、2つのヘッダーがあります.1つは正しい場所には何も置かれず、もう1つは間違った場所にあります。これはXcodeで編集されたものです。したがって、ファイルインスペクタを見て、適切な場所にブリッジヘッダーを配置する必要があります。

2

https://developer.apple.com/library/ios/documentation/Swift/Conceptual/BuildingCocoaApps/MixandMatch.html

によると、[ファイル]> [新規]> [ ファイル>(iOSの、watchOS、tvOS、またはOS X)>ソース>ヘッダーファイルを選択することにより、ブリッジヘッダーを自分で作成することができますに。

Objective-CコードをSwiftコードに公開するには、ブリッジヘッダーファイルを編集する必要があります。 Objective-Cブリッジヘッダーファイルで、Swiftに公開するすべてのObjective-C ヘッダーをインポートします。例:

ビルド設定でSwiftコンパイラ - コード生成で、 Objective-Cブリッジヘッダービルド設定に ブリッジヘッダーファイルへのパスがあることを確認します。パスは、 設定でInfo.plistパスが指定されている方法と同様に、プロジェクトとの相対的なものにする必要があります。 ほとんどの場合、この設定を変更する必要はありません。 このブリッジヘッダーファイル にリストされているすべての公開Objective-Cヘッダーは、Swiftに表示されます。 Objective-Cの機能は であり、そのターゲット内の任意のSwiftファイルで自動的に利用できます。 のインポート文はありません。システムクラスで使用する同じ Swift構文を使用して、カスタムObjective-Cコードを使用します。

これを正しく実行してもまだ機能していない場合は、プロジェクト派生データを削除して、プロジェクトのクリーンアップを試みてください。

関連する問題