类型没有任何成员
问题描述:
我正在玩一个新班级的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)
}
答
我同意@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
工作就像一个魅力。谢谢安东尼奥! – user1790252 2014-08-31 04:40:43