我有一个enum
里面有4个对象。我正在尝试创建一个空变量,将指向enum
中的某个对象。
enum Collection:Int{
case First=1, Second, Third, Fourth
}
var myCollection : Collection
myCollection = Collection.Second // This will happen later on.
我在类名称中收到以下错误:
Class' MyClassName'没有启动器
我该如何解决?
答案 0 :(得分:1)
从关于此开关的其他问题开始,隐式解包变量会在使用switch语句时给出(看似)奇怪的错误消息。 (可以使用switch myCollection as Collection
btw修复。)。
无论如何,对于手头的问题,扩展枚举以包含.None
值可能是有意义的。并定义变量var
myCollection : Collection = .None
答案 1 :(得分:0)
将您的媒体资源更改为可选
var myCollection : Collection?
或者给它一个默认值
var myCollection : Collection = Collection.First
如果它不是可选的或没有默认值,则必须在启动器中初始化它。
答案 2 :(得分:0)
您需要初始化实例属性。
有很多方法可以解决这个错误。这取决于具体情况。
enum Collection: Int {
case First = 1, Second, Third, Fourth
}
var myCollection: Collection = Collection.First
myCollection = Collection.Second
如果您想设置nil,请使用?(问号)。
enum Collection: Int {
case First = 1, Second, Third, Fourth
}
var myCollection : Collection?
myCollection = Collection.Second
或(在这种情况下,我只使用了init()。)
enum Collection:Int{
case First = 1, Second, Third, Fourth
}
var myCollection : Collection
init() {
myCollection = Collection.Second
}