Type does not have a member

不羁的心 提交于 2019-11-26 21:01:57

You cannot initialize an instance class property referencing another instance property of the same class, because it's not guaranteed in which order they will be initialized - and swift prohibits that, hence the (misleading) compiler error.

You have to move the initialization in a constructor as follows:

let components: NSDateComponents

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

I agree with @Antonio The other way might be to create struct if you don't want to use 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)
}

Test

var model:DataModel = DataModel()
var c = model.components.year  // 2014
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!