Propiedad 'self. *' No inicializada en llamada super.init

Acabo de actualizar mi xcode a 6.3.1. El problema es que obtuve este extraño post de error ya que Swift 1.2. Tengo este tipo de post de error

/Users/MNurdin/Documents/iOS/xxxxx/Library/SideBar.swift:32:15: Property 'self.originView' not initialized at super.init call /Users/MNurdin/Documents/iOS/xxxxx/Library/SideBar.swift:38:20: Immutable value 'self.originView' may only be initialized once 

en este codigo

 let originView:UIView? override init() { super.init() //error here } init(sourceView:UIView, menuItems:Array<String>){ super.init() //error here originView = sourceView //error here 

Por favor aconséjame. Gracias.

    Tienes que inicializar todas las properties antes de llamar a super.init en cualquier método init

    Entonces, cambie esto antes de llamar a super.init ()

     originView = sourceView //error here 

    Excepción:

    1. propiedad opcional
    2. propiedad con valor pnetworkingeterminado
    3. propiedad perezosa

    Haga que su originView sea originView por

     var originView: UIView?. 

    Si su originView no es originView debe proporcionar un valor pnetworkingeterminado antes de llamar

     super.init(). 

    Del libro "The Swift Programming Language" de Apple:

    "El comstackdor de Swift realiza cuatro safety-checks útiles para asegurarse de que la initialization en dos fases se complete sin error"

    "Un inicializador designado debe asegurarse de que todas las" properties introducidas por su class se inicialicen antes de que delegue hasta un inicializador de superclass ".

    Básicamente, debe ensure that your instance variables are in a consistent state antes de hacer nada, incluidos los methods de llamada.

     class YourClass { var view: UIView init(view: UIView) { self.view = view } } 

    Bueno, en tu caso, puedes convertirlo en una nueva UIView :

     let originView = UIView() 

    o hacerla nula

     let originView: UIView? 

    o hacer una propiedad perezosa :

     lazy var originView: UIView = { let view = UIView(frame: CGRect(x: 0, y: 0, width: 375, height: 200)) // customize it return view }() 

    Al usar la instanciación perezosa puedes pasar un método:

     lazy var originView: UIView = self.createView() func createView() -> UIView { let view = UIView(frame: CGRect(x: 0, y: 0, width: 375, height: 200)) // customize it return view }