swift - 为什么我不能将 Int 类型的枚举大小写在单引号中?

标签 swift enums

我正在遵循一个教程,它要求输入以下代码:

import UIKit

enum Theme: Int {
  //1
  case `default`, dark, graphical

  //2
  private enum Keys {
    static let selectedTheme = "SelectedTheme"
  }

  //3
  static var current: Theme {
    let storedTheme = UserDefaults.standard.integer(forKey: Keys.selectedTheme)
    return Theme(rawValue: storedTheme) ?? .default
  }
}

这似乎很好,但是我开始在线研究 Swift 中的枚举到底是什么。我在网上找到的一条信息说我可以将每个案例分解为单独的一行,如下所示:

import UIKit


//We're creating an enum!
enum Theme: Int {

  //1
  case 'default'
  case dark
  case graphical

  //2
  private enum Keys {
    static let selectedTheme = "SelectedTheme"
  }


}

但是我收到一个编译时错误,提示“枚举‘case’声明中存在预期标识符,我不确定这是什么意思。谁能解释一下为什么我不能在这个例子中将每个案例分成单独的一行?

最佳答案

感谢上面的精彩评论的帮助。原因是因为“default”一词是 Swift 语言中保留的关键字,因此为了在我自己的程序中以不同于 Swift 语言建议的方式使用它,我需要将单词放在反引号内。请参阅此问题以供引用:Use reserved keyword a enum case

关于swift - 为什么我不能将 Int 类型的枚举大小写在单引号中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49352629/

相关文章:

swift - 追加到 [字符 : [object]] returns 0 key/value pair 的字典

python-2.7 - pip install enum not working 显示 'intflag' 的错误没有

java - 根据传入的字符串设置枚举值

c# - 枚举组合的设计模式(方法参数)

java - 在 EnumSet 和 boolean 值数组之间转换

swift - 为什么我不能在 SwiftUI init 中为 @State var 赋值?

swift - 扩展 CollectionType 添加 indexOutOfRange 函数

xcode - 如何在 Swift 中创建 Sprite 在屏幕范围内的随机移动?

swift - “线程 1 : EXC_BAD_INSTRUCTION (code=EXC_I386_INVOP, 消退 = 0x0)

java - Java 方法可以返回 Enum 类型吗?