AWS APIGatewayClient(Swift) 在 Swift3 中不起作用?



plow readme.md,我已经设置了包括awsapigatewaywaybridge.h。

的桥接标头

Swift撰写的生成的客户端SDK在Swift 3中有很多编译器错误,因此我用Swift 3替换了生成的Swift 2代码。

我全部替换了它们:不从ApigatewayClient类实现对象。

但Xcode说以下错误消息。

"/applications/xcode.app/cottents/developer/toolchains/xcodedefault.xctoolchain/usr/bin/swiftc失败了出口代码1"

"

生成的客户端。swift具有init函数。

init(configuration: AWSServiceConfiguration) {
    super.init()
    self.configuration = configuration.copy() as! AWSServiceConfiguration
    ...
}

在功能中,我找到了一个行为错误的行。但是我找不到解决方法的方法。

self.configuration = configuration.copy() as! AWSServiceConfiguration

如果该行被评论了,则Xcode可以成功编译。

是由XCode设置引起的错误还是我的个人问题?任何人都可以在Swift 3?

中使用ApigatewayClient(Swift)

我使用xcode ver8.2.1

生成的客户端Swift SDK在Swift 3中不起作用。

如果您的应用程序由Swift 3编写。

,则需要使用目标C生成的SDK。

https://github.com/aws/aws-sdk-ios/issues/510

我在升级到Xcode版本8.2.1(8c1002)时,与AWSServiceConfiguration有类似的问题。它会给我带来相同的错误,即您提到的self.configuration = configuration.copy()as!!awsserviceconfiguration。

i在我的Awsapigatewaywayclient子类中覆盖了AWSServiceConfiguration,并将局部VAR用作之间。然后在分配中使用它

下面是我的工作。希望它有帮助。

var customConfig:AWSServiceConfiguration?
override open var configuration: AWSServiceConfiguration{
    get {
            guard let config = customConfig else{
                return AWSServiceConfiguration()
            }
        return config
    }
    set(value) {
        self.customConfig = value
    }
}

然后这样做。

init(configuration: AWSServiceConfiguration) {
    super.init()
    //the below asignment causes a linking error
    // self.configuration = configuration.copy() as! AWSServiceConfiguration
    //this is the new assignment
    self.customConfig  = configuration.copy() as? AWSServiceConfiguration
    var URLString: String = "https://xxxxx.execute-api.us-east-1.amazonaws.com/xxxx"
    if URLString.hasSuffix("/") {
        URLString = URLString.substring(to: URLString.characters.index(URLString.startIndex, offsetBy: URLString.lengthOfBytes(using: String.Encoding.utf8) - 1))
    }
    self.configuration.endpoint = AWSEndpoint(region: self.configuration.regionType, service: .apiGateway, url: URL(string: URLString)!)
    let signer: AWSSignatureV4Signer = AWSSignatureV4Signer(credentialsProvider: self.configuration.credentialsProvider, endpoint: self.configuration.endpoint)
    if let endpoint = self.configuration.endpoint {
        self.configuration.baseURL = endpoint.url
    }
    self.configuration.requestInterceptors = [AWSNetworkingRequestInterceptor(), signer]
}

最新更新