Swift 类型没有成员
我在一个快速的操场上玩,在一个新班级工作。出于某种原因,我不断收到一个错误,即类“没有成员类型”,其名称为前面三行定义的常量。代码如下:Swift 类型没有成员,swift,swift-playground,Swift,Swift Playground,我在一个快速的操场上玩,在一个新班级工作。出于某种原因,我不断收到一个错误,即类“没有成员类型”,其名称为前面三行定义的常量。代码如下: import Foundation class DataModel { let myCalendar = NSCalendar.autoupdatingCurrentCalendar() var myData = [NSDate : Float]() let now = NSDate() let components = m
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
如果不想使用init
,另一种方法可能是创建struct
:
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)
}
试验
很有魅力。谢谢你,安东尼奥!这也很有效;我把@Antonio的答案标记为正确,只是因为它更符合我的整个项目。谢谢!
var model:DataModel = DataModel()
var c = model.components.year // 2014