swift - El tipo no tiene un miembro
swift-playground (2)
Estoy jugando con un patio de juegos 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 anteriormente tres líneas. 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 sigue dándome un error en la penúltima línea, diciendo que "DataModel.Type no tiene un miembro llamado ''myCalendar''
Aunque no creo que deba hacer una diferencia, he intentado definir myCalendar como var.
Estoy de acuerdo con
@Antonio
La otra forma podría ser crear una
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
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 prohíbe eso, de ahí el error del compilador (engañoso).
Debe mover la inicialización en un constructor de la siguiente manera:
let components: NSDateComponents
init() {
self.components = myCalendar.components(.CalendarUnitYear | .CalendarUnitMonth, fromDate: now)
}