2016-12-23 4 views
0

После README.md я установил заголовок моста, включая AWSApiGatewayBridge.h.AWS APIGatewayClient (Swift) не работает в Swift3?

Сформированный клиент SDK написан Swift имеет много ошибок компилятора в Swift 3, поэтому я заменил сгенерированный Swift 2 код Swift 3.

я заменил их все: Не объект создания экземпляра из класса APIGatewayClient ,

Но Xcode сообщает следующее сообщение об ошибке.

"/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/swiftc потерпела неудачу с кодом выхода 1"

Сгенерированный Client.swift имеет функцию инициализации.

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

В этой функции я нашел строку, в которой была сделана ошибка. Но я не мог найти способ исправить это.

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

Если строка была прокомментирована, Xcode может скомпилироваться успешно.

Является ошибкой, вызванной установкой Xcode или моей личной проблемой? Любой может использовать APIGatewayClient (Swift) в Swift 3?

я использую Xcode ver8.2.1

ответ

0

У меня была аналогичная проблема с AWSServiceConfiguration, когда я обновился до версии Xcode 8.2.1 (8C1002). Это даст мне ту же ошибку при назначении задания, которое вы упомянули self.configuration = configuration.copy() как! AWSServiceConfiguration.

Я переопределяю AWSServiceConfiguration в моем подклассе AWSAPIGatewayClient и использовал локальный 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] 
} 
Смежные вопросы