CocoaPodでAlamofireをインストールしたところ、AWSのS3が使えなくなってしまった。
原因は、AlamofireをインストールしたときにPodfileにuse_frameworks!を書いたことのようである(以下)。
Podfile
(略)
pod 'AWSCore'
pod 'AWSS3'
pod 'AWSiOSSDKv2'
pod 'AWSCognito'
# new rows
platform :ios, '8.0'
use_frameworks!
pod 'Alamofire', '~> 1.3'
(略)
これでターミナルでpod install
してからアプリを走らせたところ、以下のようなエラー。
error
/Users/*****/Pods/AWSCore/AWSCore/FMDB/AWSFMDatabase.h:2:9: Include of non-modular header inside framework module 'AWSCore.AWSFMDatabase'
AWSCoreがuse_frameworks!に対応していないversion 2.2.0だった。
pod update
で更新をかけてAWS系を最新版のversion 2.2.4に更新した。
これで走らせたところ、以下のエラー。
error
Use of undeclared type 'AWSS3TransferManagerUploadRequest'
Use of undeclared type 'AWSS3TransferManager'
どうやらS3だけ読み込めていない様子。
アプリ名-Bridging-Headerで以下のように、直接パスを指定してあげたところ、読み込んでくれるようになった。
Bridging-Header変更前
#import <AWSCore/AWSCore.h>
#import <AWSCognito/AWSCognito.h>
#import <AWSS3/AWSS3.h>
Bridging-Header変更後
#import <AWSCore/AWSCore.h>
#import <AWSCognito/AWSCognito.h>
#import "/Users/****/****/****/Pods/AWSS3/AWSS3/AWSS3.h"
これで解決したが、疑問は残る。
なぜ#import <AWSS3/AWSS3.h>
で読めないのか不明だし、
このように絶対パスを書くのは賢い方法ではない。