Tipo no tiene un miembro

Estoy jugando con un patio Swift trabajando en una nueva clase. Por alguna razón, sigo recibiendo un error de que la clase “no tiene un tipo de miembro” con el nombre de una constante definida tres líneas antes. Aquí está el código:

import Foundation class DataModel { let myCalendar = NSCalendar.autoupdatingCurrentCalendar() var myData = [NSDate : Float]() let now = NSDate() let components = myCalendar.components(.CalendarUnitYear | .CalendarUnitMonth, fromDate: now) } 

Xcode Beta6 me mantiene un error en la penúltima línea, diciendo que “DataModel.Type no tiene un miembro llamado ‘myCalendar’

Aunque no creo que deba marcar una diferencia, he intentado definir myCalendar como una var.

No puede inicializar una propiedad de clase de instancia que haga referencia a otra propiedad de instancia de la misma clase, porque no está garantizado en qué orden se inicializarán, y swift lo prohíbe, de ahí el error de comstackdor (engañoso).

Tienes que mover la inicialización en un constructor de la siguiente manera:

 let components: NSDateComponents init() { self.components = myCalendar.components(.CalendarUnitYear | .CalendarUnitMonth, fromDate: now) } 

Estoy de acuerdo con @Antonio La otra manera podría ser crear struct si no quieres usar init :

 class DataModel { struct MyStruct { static var myCalendar:NSCalendar = NSCalendar.autoupdatingCurrentCalendar() static let now = NSDate() } var myData = [NSDate : Float]() var components = MyStruct.myCalendar.components(.CalendarUnitYear | .CalendarUnitMonth, fromDate: MyStruct.now) } 

Prueba

 var model:DataModel = DataModel() var c = model.components.year // 2014 
    Intereting Posts