17

次のポッドで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 の使用法は問題なく機能することがわかりました。

ただし、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 ブリッジング ヘッダー

フレームワーク検索パス

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

フレームワーク検索パス

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

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

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

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

編集

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

ユーザーヘッダー検索

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

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

4

3 に答える 3

8

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

  1. use_frameworks!Podfileに必ず入れてください
  2. Bridging ヘッダーがあるかどうかは関係ありません。そのままにしておく
  3. SWIFTファイルで使用するだけです import Podname

それだけです。準備完了です。もちろん、プロジェクトを消去したり、派生データ フォルダーを削除したりする必要がある場合もあります。ビルドして使用できます。

于 2016-11-18T18:00:35.470 に答える
2

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

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

ターミナルで pod install を実行します。

クリーン&ビルド!

検索パスにこれらのパスを追加するか、ブリッジングヘッダーを再度追加しようとしましたが、エラーは同じでした。

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

それが役立つことを願っています!

于 2016-08-17T07:03:28.627 に答える