2016-09-12 4 views
1

私と私のチームは、基本プロジェクトとプライベートポッドを含む奇妙な状況に陥っています。XCodeは、プライベートポッド(Swift)内で定義されたプロトコルを使用しようとすると「宣言されていないタイプの使用」と言います。

私たちの問題は、基本アプリケーションコードから(プライベートポッドに定義されている)(プロトコル)識別子の一部にアクセスできないということです。

私たちの問題は、これらの2つのスタックオーバーフロースレッドで説明した問題とまったく同じように見えますが、その解決策は私たちと協力していません。

スレッド1:Source files not found in Swift

スレッド2:CocoaPod installed but doesn't see Swift code

私たちが使っているスケルトンは、このいずれかになります。

Project Skeleton

当社コモンズポッド(私達はできないプロトコルで私たちの基本アプリから見てください)は、この.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" => "[email protected]" } 
    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(メインのxcworkspaceにCommonsポッドを追加する)があります。

# 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 

私たちのプロトコルは、「Pods」プロジェクトの中にあるため、公開されていると定義されています。

他に何を調べる必要がありますか?

PS:私たちのカスタムプロトコルは、私たちのメインアプリケーションだけでなく、私たちのメインアプリケーションに含まれる別のポッドであるAlamofire内で定義されたプロトコルも "不可視"です。私たちはそれらを使用しようとし、コンパイル時にXcodeは文句を言います。

ありがとうございます。 ご挨拶。

EDIT1:私たちの問題を絞り込むと、コンパイル時に何か起きていると思う。どうして? XCodeは、CMD + Click(Podsのファイル構造で定義されている2つのプロトコル)を押しても問題のあるシンボルを解決できますが、コンパイラはそれを行うことはできず、 "宣言されていない型の使用"

+0

ポッドを追加した後でプロジェクトをクリーニングしてみますか? – impression7vx

+0

私たちは前後にプロジェクトをきれいにしました。派生したデータ。 – Isaac

答えて

0

Whops、成功

我々が定義されたプロトコルはそう、フレームワークポッドの内側に住んでいた(!?):我々は間違って何をしていましたか?

明らかに、(プロトコル(!)のクラス名ではなく)フレームワークの名前をインポートする必要がありました。初心者のエラーの種類(?)。

私たちがswiftファイルの上部に「import commons」と入力すると、「未定義xxxxxx」のエラーはすべて消えました。

インポートされたポッドがフレームワークプロジェクトであったか、偶然に釘を打っただけなので、この特定のインポートパートが必要なのかどうかはわかりません。

私が使っている他のポッドからインポートされたいくつかの他のクラスやものは、インポート部品が不要で、最初から直接使用することができます。だから私たちの勘違いはこの(?)によって引き起こされたかもしれません。

これまでのように、これらは「カスタムポッド+ swift + Frameworks +何とか複雑なエスカレート可能な.appアーキテクチャ」を使った初心者の問題です。

この問題とその(解決策は)将来の開発者に同様の状況にあることを知らせることを望みましょう。

ご挨拶。

関連する問題