Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Swift 类型没有成员_Swift_Swift Playground - Fatal编程技术网

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