实例成员不能在className中使用


var collegeNames : String!
struct collegeName {
    static var clgName = collegeNames()
}

我会收到以下错误:

"实例变量'collegenames'不能在类型的'ViewController'上使用

我想您要创建一个单例,但是您在collegeNames中有一个错字,并且您还需要用let替换var,也替换此行:

static var clgName = collegeNames()

with:

static let clgName = collegeName()

问题是 collegeNames()是不一致的。您不能按括号遵循变量名称;这没有道理。

如果您删除了括号,则可以编译;但是,尽管结果会编译,但结果仍然是一件非常愚蠢的事情,因为您不能给static var一个动态值。它的值将始终为 nil,因为那是 collegeNames的值。

如果目标是实现单例,请完全删除collegeNames并将静态属性初始化为collegeName()。您还将使用let,而不是var。如果您只遵守《大写惯例》,那么整个模式就会得到极大的澄清:

struct CollegeName {
    static var clgName = CollegeName()
}

这是Swift中的标准单例图案。