实例成员不能在classname

时间:2017-06-25 17:45:59

标签: swift

var collegeNames : String!

struct collegeName {
    static var clgName = collegeNames()
}

我收到以下错误:

  

“实例变量'collegenames'不能用于'ViewController'类型”

2 个答案:

答案 0 :(得分:1)

我想你想要创建一个Singleton,但是你在collegeNames中输入了一个拼写错误,你需要用var替换let,替换这一行:

static var clgName = collegeNames()

使用:

static let clgName = collegeName()

答案 1 :(得分:0)

问题在于collegeNames()是不连贯的。您不能通过括号跟随变量名称;没有意义。

如果你删除了括号,你就可以编译;但结果虽然会编译,但仍然是一件非常愚蠢的事情,因为你不能给static var一个动态值;其值始终为nil,因为这是collegeNames的值。

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

struct CollegeName {
    static var clgName = CollegeName()
}

这是Swift中的标准单例模式。