3

ココア ポッド (CocoaLumberjackこの場合) を iOS アプリと独自のフレームワークに統合する際に問題があります。

は次のPodfileようになります。

source 'https://github.com/CocoaPods/Specs.git'
platform :ios, "8.0"

target "CommonModule" do
    use_frameworks!
    # CocoaLumberjack wasn't officially released with Swift support yet
    # pod 'CocoaLumberjack'
    pod 'CocoaLumberjack', :git => 'git@github.com:CocoaLumberjack/CocoaLumberjack.git', :commit => '6882fb5f03696247e394e8e75551c0fa8a035328'
    xcodeproj 'CommonModule/CommonModule.xcodeproj'
end

次のようなモジュール (動的フレームワーク) の階層があります。

  • CommonModule
  • ModelsModule(依存関係がありますCommonModule)

そして最後に、メインアプリ:

  • MySwiftAppModelsModule( と の両方に依存CommonModule)

現在、CocoaLumberjackのいくつかのファイルで使用されてCommonModuleおり、期待どおりに動作します。import CommonModuleただし、の任意のファイルで行うたびにModelsModule、次のコンパイル エラーが発生します。

~/Developer/ModelsModule/ModelsModule/SomeFile.swift:2:8: error: missing required module 'CocoaLumberjack'
import CommonModule
       ^

この問題を解決する方法はありますか?

更新: Carthageの使用を推奨する人もいます。できれば避けたいところです。

4

2 に答える 2

0

CommonModule は迅速であり、あなたの呼び出しを見て、CocoaPods 0.36 も使用していると想定していますuse_frameworks!。また、CocoaLumberjack の Obj-C バージョンを使用していて、それを Swift で使用しようとしていると仮定しています。このuse_frameworks!フラグは、CocoaPods に、Xcode プロジェクトでリンクするポッドのフレームワークを生成するように指示します。だからあなたはクラスのトップで言う必要があります

import CocoaLumberjack

Swift-Bridging-Header を使用する代わりに

これはcocoapods.orgのブログ投稿で、新しいuse_frameworks!フラグのポッドを作成する方法について説明しています。下にスクロールして、一般的なヘッダーの落とし穴

また、podspec が CocoaLumberjack を使用するための依存関係を作成し、プロジェクトの CocoaLumberjack と CommonModules にリンクされている場合でも、Common Module がライブラリで正しく参照していない可能性があります。それを乗り越えるためには、Objective-C ライブラリにインポートするときにフレームワークとして参照する必要があります

#import <CocoaLumberjack/CocoaLumberjack.h>

于 2015-04-15T17:23:09.563 に答える