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]
}