2016-10-05 9 views
4

Swift 3で書かれたiOSアプリケーションに、生成されたAWS API Gateway SDKを追加しようとしています。AWSによって生成されたコードには、Swift 3ではコンパイルされないものがたくさん含まれていますが、それら。間違いの1つは私を本当に混乱させました。Swift 3でAWSAPIGatewayClientの設定を行うことはできませんか?

AWSライブラリーから(プリコンパイルされた)AWSAPIGatewayClientクラスは次のようになります。

open class AWSAPIGatewayClient : NSObject { 
    open var configuration: AWSServiceConfiguration! { get } 
    open var apiKey: String! 
} 

そして、生成された子クラスは、このinit関数を持っています

init(configuration: AWSServiceConfiguration) { 
    super.init() 

    self.configuration = configuration 

    ... 
} 

コンパイラは自然にその構成プロパティを不平を言いますゲット専用です:

AWSMyServiceClient.swift:127:25: Cannot assign to property: 'configuration' is a get-only property 

私は何かが不足していますか?または、これはおそらくどのように働く可能性がありますか?私は同じ問題を抱えている誰かを見つけることができませんでした。私の特定のコードに何か問題があると思わせてしまいます。

+1

は、私はいつもAWS API GatewayのOBJ-cはスウィフト2.2プロジェクトのコードを生成し使用しています。私は自分のプロジェクトをSwift 3に変換しましたが、それはうまくいきます(まだobj-cで生成されたコード)。私は今、Swiftコードを提供していることに気づいた。私は生成されたSwiftとobj-cコードを置き換えようとしましたが、あなたが言ったように、それは多くのコンパイルエラーがあります。私は生成されたコードでコンパイルエラーを修正するつもりはない。これはすぐに使えるはずです。生成されたSwiftについて、それがどのバージョンでどのように導入されたのか、どのように使用するのかについてのドキュメントは見つかりません。今のところ私はobj-cに固執します。 –

+0

ありがとう、これは非常に有用な入力でした。次に、このアプローチを試してみましょう。コードを自動生成することの利点の多くは、更新するたびに変更する必要がある場合は失われます。 –

答えて

3

Swift用APIゲートウェイで生成されたSDKには、のように、アプリケーションのブリッジヘッダーを介してインポートされたAWSApiGatewayBridge.hという名前のファイルもパッケージに含まれています。

AWSApiGatewayBridge.hが目的のcブリッジヘッダーを介してプロジェクトにインポートされていないと、生成されたSDKは動作しません。

おかげで、 ローハン

+0

私はブリッジングヘッダファイルに 'AWSApiGatewayBridge.h'をインクルードしましたが、そのようなものは生成されたクライアントで気になることをたくさん説明します。もう一つの例は、生成されたクライアントの 'private static var token:dispatch_once_t = 0'という行で、' dispatch_once_t'コンパイラはSwiftでは利用できません。これはちょうど3つのスウィフトなのでしょうか?それとも、生成されたコードがコンパイルされないのかという手掛かりになりますか? –

+0

それはスウィフト3のものになります。生成されたSDKはSwift 2.3で正しく動作します。しかし、構成オブジェクトが読めるだけであるという問題は、ブリッジヘッダーで解決する必要があります。あなたはdispatch_once_t問題に対処するための別のアプローチをとることができ、SDKはうまく動作するはずです。 –

+0

ビルド設定からブリッジヘッダーファイルを削除して追加し、プロジェクトを整理してビルドしましたが、それでも成功しませんでした。その後、コードが絶望的に​​変化していたので、ビルドエラーは左パネルから消え始めました。いくつか残っていましたが、設定の問題はなくなりました!私はなぜその変更が直ちに起こったのか分かりませんが、あなたが正しいことをとてもうれしく思います。ありがとう! –

関連する問題