类型没有任何成员

问题描述:

我正在玩一个新班级的Swift游乐场。出于某种原因,我不断收到一个错误,指出类“没有成员类型”,并且前面定义了一个常量的名称。下面是代码:类型没有任何成员

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不断给我的倒数第二行的错误,认为“DataModel.Type没有一个名为成员‘myCalendar’

虽然我不认为它应该有所作为,我试图将myCalendar定义为变种

您不能初始化引用同一类的另一个实例属性的实例类属性,因为它无法保证它们将以何种顺序进行初始化 - 而且swift禁止,因此(误导)编译器错误。

你必须移动初始化在构造函数如下:

let components: NSDateComponents 

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

工作就像一个魅力。谢谢安东尼奥! – user1790252 2014-08-31 04:40:43

我同意@Antonio另一种方式可能是建立struct如果你不想使用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) 
} 

测试

var model:DataModel = DataModel() 
var c = model.components.year // 2014 
+0

这也有效;我标记@安东尼奥的答案是正确的,只是因为它适合我的整体项目。谢谢! – user1790252 2014-08-31 04:41:49