私と私のチームは、基本プロジェクト + いくつかのプロトコルが内部にあるプライベート ポッドを含む奇妙な状況に陥っています。
問題は、ベース アプリ コードから一部の (プロトコル) 識別子 (プライベート ポッドで定義) にアクセスできないことです。
どうやら私たちの問題は、これら 2 つのスタック オーバーフロー スレッドで説明されている問題とまったく同じようですが、それらの解決策はうまくいきませんでした。
スレッド 1: Swift でソース ファイルが見つからない
スレッド 2: CocoaPod がインストールされているが、Swift コードが表示されない
使用しているスケルトンは次のとおりです。
Commons ポッド (ベース アプリからは確認できないプロトコルを使用) は、次の .podspec ファイルで定義されます。
Pod::Spec.new do |s|
s.name = "Commons"
s.version = "0.1.10"
s.summary = "Commons framework"
s.description = <<-DESC "Commons framework"
DESC
s.homepage = "http://EXAMPLE/Commons"
s.license = { :type => "Commercial" }
s.author = { "Author" => "author@mail.mail" }
s.source = { :git => "GITLAB_PRIVATE_URL/commons-iOS-Pod.git", :tag => s.version }
s.source_files = "Commons", "Commons/**/*.{h,m,swift}"
s.exclude_files = "Commons/Exclude"
end
基本アプリから、次の Podfile があります (Commons ポッドをメインの xcworkspace に取得するため)。
# Uncomment this line to define a global platform for your project
platform :ios, '8.0'
target 'ios-appbase' do
# Comment this line if you're not using Swift and don't want to use dynamic frameworks
use_frameworks!
pod 'Alamofire'
pod 'ViewDeck'
pod 'JLRoutes'
pod 'Commons', :git => 'GITLAB_PRIVATE_URL/commons-iOS-Pod.git', :tag => '0.1.4', :branch => 'develop'
pod 'RestManager', :git => 'GITLAB_PRIVATE_URL/RestManager-iOS-Pod.git', :tag => '0.1.3'
pod 'BaseClasses', :git => 'GITLAB_PRIVATE_URL/BaseClasses-iOS-Pod.git', :tag => '0.1.3'
pod 'DesignManager', :git => 'GITLAB_PRIVATE_URL/DesignManager-iOS-Pod.git', :tag => '0.1.2'
end
プロトコルを public として定義しました (「Pods」プロジェクト内にあるため、実行されることが期待されます)。
他に何を調べるべきですか?
PS: カスタム プロトコルがメイン アプリから「見えない」だけでなく、メイン アプリに含まれる別の Pod である Alamofire 内で定義されたプロトコルも同様です。それらを使用しようとすると、コンパイル時に XCode が文句を言います。
前もって感謝します。ご挨拶。
EDIT1:問題を絞り込むと、コンパイル時に何かが起こっていると思います。なんで?XCode は CMD + クリック (Pods ファイル構造で定義された 2 つのプロトコル) を押すと問題のあるシンボルを解決できますが、コンパイラはそれを行うことができず、「宣言されていない型の使用」エラーが発生します。