title: 'self' used before all stored properties are initialized
body: <p>I'm working through a <a href="https://github.com/nettlep/learn-swift/blob/master/16.%20ARC.playground/section-1.swift#L216" rel="noreferrer">learn-swift playground</a> and upgrading it to Swift 2.0 as I learn the language.  The following code (which likely worked with prior versions of Swift) now generates two errors: "'self' used before all stored properties are initialized" and "Constant 'self.capitalCity' used before initialized"</p>
  
  <pre><code>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
      }
  }
  </code></pre>
  
  <p>reading an <a href="https://stackoverflow.com/questions/29761219/swift-gives-self-used-before-all-stored-procedures-are-initialized-error-when">answer to a similar question</a> I see that I can change <code>let capitalCity: City!</code> to <code>var capitalCity: City!</code> and the syntax error is resolved.  </p>
  
  <p>I realize that in this contrived example a country's capital city can change, so that would be fine, but what if there were a case where the value really was a constant...</p>
  
  <p>Is there any way to resolve the syntax error while keeping capitalCity a constant? </p>