web-dev-qa-db-ja.com

Objective-cフレームワークをSwiftフレームワークプロジェクトにインポートする

いくつかのobjective-cフレームワークをインポートする必要があるフレームワークを構築していますが、「Beaconstac.framework」をインポートする必要がありますが、Swiftフレームワークプロジェクトにブリッジヘッダーを追加できないため、だから私の質問は、私のプロジェクトでこのフレームワークをどのように使用できるかですこれは私が試した私のプロジェクトでは直接アクセスできません

beaconstacをインポートする

しかし、そのエラー「そのようなモジュールはありません」

これを行うための代替手段はありますか?

13
Krishna Verma

アンブレラヘッダーにBeaconstacフレームワークをインポートする必要があります。つまり、通常使用する場合、たとえば#import <Beaconstac/Beaconstac.h> Obj-Cブリッジヘッダーで、フレームワークの場合、それをアンブレラヘッダーに配置する必要があります。

詳細については、Appleのドキュメントのこの章を参照してください。

https://developer.Apple.com/library/ios/documentation/Swift/Conceptual/BuildingCocoaApps/MixandMatch.html#//Apple_ref/doc/uid/TP40014216-CH10-ID1

3
heypiotr

既存のObjCフレームワークをSwiftフレームワークプロジェクトに含める手順

Swiftで「SwiftProj.framework」プロジェクトを作成しているとします。これは、内部でObjectiveC「ObjC.framework」を使用する必要があります。

  1. ObjC.frameworkをFrameworksフォルダーに配置し、Linked Frameworks andLibrariesを介してSwiftフレームワークプロジェクトにリンクし、同じレベルでmodule.modulemapファイルを作成します。
  2. Module.modulemap内
module ObjC{
    header "ObjC.framework/Headers/ClassA.h"
    export *
}
  1. Xcconfigファイルを作成します([ファイル]-> [新規]-> [iOS]-> [その他]-> [構成設定ファイル])

  2. Xcconfigファイル内

Swift_INCLUDE_PATHS = $(SRCROOT)/
MODULEMAP_PRIVATE_FILE = $(SRCROOT)/module.modulemap

これで、SwiftProj.frameworkでObjC.ClassAにアクセスできます。

14
Atul

module.modulemapというファイルを作成し、次の内容を含めます。

module ObjCFrameworkName {
    header "ObjCFrameworkName.framework/Headers/ObjCFrameworkNameUmbrellaHeader.h"
    export *
}

Obj-Cフレームワークのアンブレラヘッダーへの正しいパスが必要であることに注意してください。これは、上記の例にリストされているものとわずかに異なる場合があります。

それでも問題が解決しない場合は、 このプロジェクト を確認することを強くお勧めします。

2
crow