Ich arbeite an einem learn-swift playground und aktualisiere es auf Swift 2.0, während ich die Sprache lerne. Der folgende Code (was wahrscheinlich mit früheren Versionen von Swift gearbeitet) erzeugt nun zwei Fehler: „‚Selbst‘verwendet, bevor alle gespeicherten Eigenschaften initialisiert“ und „Constant‚self.capitalCity‘hat vor initialisiert“'self' verwendet, bevor alle gespeicherten Eigenschaften initialisiert werden
class Country
{
let name: String
let capitalCity: City!
init(name: String, capitalName: String)
{
self.name = name
self.capitalCity = City(name: capitalName, country: self)
}
}
class City
{
let name: String
unowned let country: Country
init(name: String, country: Country)
{
self.name = name
self.country = country
}
}
Lesung ein answer to a similar question Ich sehe, dass ich let capitalCity: City!
zu var capitalCity: City!
ändern kann und der Syntaxfehler behoben ist.
Mir ist klar, dass in diesem erfundenen Beispiel eine Hauptstadt des Landes, ändern kann, so dass wäre in Ordnung, aber was, wenn es einen Fall gab, wo der Wert wirklich eine Konstante ...
Gibt es eine Möglichkeit war, den Syntaxfehler beheben und die capitalCity konstant halten?
Dies ist eine großartige Antwort. Es kommt an die Schnittstelle, die ich wollte, obwohl die Erklärung von @matt fabelhaft war – Ultrasaurus