web-dev-qa-db-ja.com

XcodeはCocoapods経由で追加されたオブジェクトを見ることができません

以下のポッドでpodfileを定義しています。

platform :ios, '8.0'
use_frameworks!

target 'LifeStream' do
pod 'SSKeychain'
pod 'LiveSDK'
pod 'Alamofire', :git => 'https://github.com/Alamofire/Alamofire.git', :branch => 'Swift-2.0'
end

ポッドをインストールして、ワークスペースを開きました。 Swift 2バージョンのAlamofireは、プロジェクトをフレームワークとしてインポートしているため、Alamofireを使用しても問題なく動作することがわかりました。

しかし、SSKeychainクラスを使用しようとすると、

未解決の識別子「SSKeychain」の使用

LiveSDKで使用しようとするクラスにも同じことが当てはまります。

プロジェクトのルートディレクトリにブリッジヘッダーがあり、プロジェクトはそれを使用するように構成されています。

#ifndef Header_h
#define Header_h

#import "SSKeychain/SSKeychain.h"
#import "LiveSDK/LiveConnectClient.h"

#endif /* Header_h */

#importから

#import "SSKeychain/SSKeychain.h"

#import "SSKeychain.h"

ファイルが見つからないため、Xcodeはコンパイルに失敗します。したがって、ブリッジヘッダーが機能していると思います。私のブリッジヘッダーがビルドされた方法では、ヘッダーが見つからないことが原因で発生するコンパイラエラーは発生しません。

ブリッジヘッダー

Objective-c Bridging header

フレームワーク検索パス

また、プロジェクトのルートディレクトリをフレームワークの検索パスに追加しました。

Framework search paths

リンクされたフレームワーク

最後に、すべてのフレームワークもプロジェクトにリンクしました。

Linked frameworks

セットアップで何か不足していますか? Cocoapodsが私のプロジェクトに1週間近く働かせることができませんでした。私は、私のプロジェクトがめちゃくちゃだったと思って、まったく新しいプロジェクトを作成しました。それは物事を変えませんでした。これを解決するために、ここから何をすべきかわかりません。

編集する

追加の調査を行った後、私は ブログ投稿を見つけました ポッドディレクトリをユーザーヘッダー検索に含める必要があることを示しています

User Header Search

コメンターは、Swiftの新しいCocoapods Frameworksサポートを使用している場合は、Frameworks/**検索パスを含める必要があることも述べました。 Pods/**とFrameworks/**の両方を含めましたが、同じ問題がまだあります。

さらに読む の後、これはCocoapodsの制限であるように聞こえ始めます。私の理解では、プロジェクトでライブラリとフレームワークを同時に使用することはできません。

16

Podfileでuse_frameworks!を使用すると、SSKeychainなどのObjective-Cポッドもフレームワークとしてビルドされます。

実際の問題は、フレームワークを使用する場合、モジュールのインポートのみがブリッジングヘッダーで機能することです。また、ブリッジングヘッダーを完全に削除することもできます。フレームワークを使用する場合は不要なので、Swiftに直接インポートできます。

10
NeoNacho

それを機能させるために何をすべきかを明確にするために:

  1. 必ずuse_frameworks! Podfile内
  2. Bridging headerがあるかどうかは関係ありません。そのままにしておきます
  3. Swiftファイルを使用するだけimport Podname

それだけです、あなたは行ってもいいです。もちろん、必要な場合もありますプロジェクトをクリーンアップするか、派生データフォルダーを削除してください。ビルドして使用できます。

7
Simon C.

Swiftポッドを使用していない場合は、

Podfileのuse_frameworks!を削除してみてください。

ターミナルでポッドインストールを実行します

クリーン&ビルド!

私はそれを修正するのにほぼ30分を費やし、検索パスにそれらのパスを追加するか、ブリッジングヘッダーを再度追加しようとしましたが、エラーは同じでした。

したがって、私の場合、ブリッジングヘッダーファイルは問題ではなく、Podfileにあります。

お役に立てば幸いです。

2
Azel