Ich versuche, ein generiertes AWS API Gateway SDK zu meiner in Swift 3 geschriebenen iOS App hinzuzufügen. Der von AWS generierte Code enthält viele Dinge, die nicht in Swift 3 kompiliert werden, aber hoffentlich kann ich die meisten von ihnen umgehen Sie. Einer der Fehler hat mich jedoch wirklich verwirrt.Sie können die AWSAPIGatewayClient-Konfiguration in Swift 3 nicht festlegen?
Die (vorkompilierte) AWSAPIGatewayClient Klasse von der AWS-Bibliothek sieht wie folgt aus:
open class AWSAPIGatewayClient : NSObject {
open var configuration: AWSServiceConfiguration! { get }
open var apiKey: String!
}
Und das erzeugte Kind Klasse hat diese Funktion init:
init(configuration: AWSServiceConfiguration) {
super.init()
self.configuration = configuration
...
}
Der Compiler beschwert sich natürlich, dass die Konfigurationseigenschaft ist Get-Only:
AWSMyServiceClient.swift:127:25: Cannot assign to property: 'configuration' is a get-only property
Bin mir etwas Obviou fehlt s, oder wie könnte das möglicherweise funktionieren? Ich konnte niemanden mit dem gleichen Problem finden, was mich vermuten lässt, dass etwas mit meinem speziellen Code nicht stimmt.
Ich habe früher immer die AWS-API-Gateway obj-c-Code in einem Swift 2.2 Projekt erzeugt. Ich habe mein Projekt in Swift 3 konvertiert und es funktioniert gut (immer noch mit obj-c generierten Code). Ich habe gerade heute festgestellt, dass sie Swift-Code bereitstellen. Ich habe versucht, den Obj-c-Code durch den generierten Swift zu ersetzen, aber wie gesagt, er hat viele Kompilierungsfehler. Auf keinen Fall werde ich Kompilierfehler im generierten Code beheben. Dies sollte out-of-the-box funktionieren. Ich kann keine Dokumentation über das generierte Swift finden, wann es eingeführt wurde, für welche Version und wie es verwendet wird. Fürs Erste bleibe ich beim Obj-c. –
Danke, das war sehr hilfreiche Eingabe. Ich werde diesen Ansatz als nächstes versuchen, da viele der Vorteile der automatischen Generierung von Code verloren gehen, wenn Sie bei jeder Aktualisierung Änderungen daran vornehmen müssen. –