在README.md之后,我设置了桥接头,包括AWSApiGatewayBridge.h。
Swift编写的生成的客户端SDK在Swift 3中有很多编译错误,所以我用Swift 3替换了生成的Swift 2代码。
我全部替换了它们:不是从APIGatewayClient类实例化对象。
但Xcode表示以下错误消息。
“/ Applications / Xcode.app / Contents / Developer / Toolchains / XcodeDefault.xctoolchain / usr / bin / swiftc使用退出代码1失败”
生成的Client.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
答案 0 :(得分:0)
生成的客户端Swift SDK在Swift 3中不起作用。
如果您的应用程序是由Swift 3编写的,则需要使用Objective C生成的SDK。
答案 1 :(得分:0)
当我升级到Xcode版本8.2.1(8C1002)时,我在AWSServiceConfiguration上遇到了类似的问题。它会在你提到self.configuration = configuration.copy()的作业赋值时给出同样的错误! AWSServiceConfiguration。
我覆盖了AWSAPIGatewayClient子类中的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]
}