0Pricing
Swift Academy · 课时

原始值与 CaseIterable

学习由 String、Int 或其他 RawRepresentable 类型支持的枚举,以及 allCases。

原始值与 CaseIterable 是 CoddyKit 上的免费 Swift Academy 课时。 这是第 1 节课,共 4 节。 你可以在下方免费阅读本课时的完整内容 — 然后在浏览器中使用内置代码编辑器和全天候 AI 导师进行实践。 这是 Swift Academy 学习路径的一部分,你的进度在网页和 CoddyKit 应用中同步。 Swift Academy 课程共包含 4 节课。

欢迎

Swift 枚举可以拥有*原始值*——与每个枚举成员一起存储的字面值。遵循 `CaseIterable` 后,您会自动获得包含所有枚举成员的集合。

原始值枚举

```swift enum Direction: String { case north = "N" case south = "S" case east = "E" case west = "W" } print(Direction.north.rawValue) // "N" ```

自动递增的整数原始值

```swift enum Planet: Int { case mercury = 1 case venus // 2 (auto) case earth // 3 case mars // 4 } print(Planet.earth.rawValue) // 3 ```

字符串原始值自动命名

```swift enum Color: String { case red, green, blue } print(Color.blue.rawValue) // "blue" — auto-named ``` 使用字符串原始值时,如果省略赋值,原始值就等于枚举成员名称。

可失败的原始值初始化器

```swift if let dir = Direction(rawValue: "N") { print(dir) // Direction.north } let invalid = Direction(rawValue: "X") // nil ``` 自动生成的可失败初始化器会在原始值无法识别时返回 nil。

CaseIterable

```swift enum Season: CaseIterable { case spring, summer, autumn, winter } print(Season.allCases) // [.spring,.summer,.autumn,.winter] print(Season.allCases.count) // 4 ```

遍历所有枚举成员

```swift for season in Season.allCases { print(season) } let picker = Season.allCases.map { "\($0)".capitalized } ```

带原始值的 CaseIterable

```swift enum Suit: String, CaseIterable { case hearts="♥", diamonds="♦", clubs="♣", spades="♠" } print(Suit.allCases.map { $0.rawValue }) // ["♥","♦","♣","♠"] ```

用于 Codable 的原始值

字符串原始值枚举可以与 `Codable` 无缝协作: ```swift enum Status: String, Codable { case active, inactive, pending } struct User: Codable { var status: Status } // JSON "active" decodes to .active automatically ```

用于标志位掩码的原始值

```swift struct Permission: OptionSet { let rawValue: Int static let read = Permission(rawValue: 1 << 0) static let write = Permission(rawValue: 1 << 1) static let execute = Permission(rawValue: 1 << 2) } var p: Permission = [.read, .write] print(p.contains(.read)) // true ```

快速检查

哪个协议可以通过 `allCases` 访问所有枚举成员?

回顾

要点: • 原始值:`enum E: String { case a = "x" }` • 整数原始值会自动递增;字符串原始值默认为枚举成员名称 • `init?(rawValue:)` 会自动生成,并且是可失败的 • `CaseIterable` 提供 `.allCases` 静态属性 • 组合使用 `String, CaseIterable`,即可用于菜单和选择器 下一节:关联值。

常见问题解答

「原始值与 CaseIterable」课时是免费的吗?

是的 — 「原始值与 CaseIterable」的完整文本可在网页上免费阅读。要进行交互式练习(内置代码编辑器和全天候 AI 导师)并解锁 Swift Academy 课程的其余内容,请升级到 CoddyKit PRO。 Swift Academy 课程共包含 4 节课。

「原始值与 CaseIterable」这节课中我会学到什么?

学习由 String、Int 或其他 RawRepresentable 类型支持的枚举,以及 allCases。 你通过在浏览器中直接运行的动手代码来练习 Swift Academy,全天候 AI 导师会在你学习这节课的过程中回答你的问题。

学习 Swift Academy 需要有经验吗?

无需任何先前经验。CoddyKit 上的 Swift Academy 课程适合初学者到高级学习者,你可以从这里开始或从头开始,按照自己的节奏学习。 这是第 1 节课,共 4 节。

「原始值与 CaseIterable」课时需要多长时间?

大多数 CoddyKit 课程大约需要 5–10 分钟。每节课都很精短且互动,所以你能稳步进步,并在网页和应用中从离开的地方继续。

我能在这节 Swift Academy 课中编写并运行代码吗?

能。每节 Swift Academy 课都包含内置代码编辑器,你可以在浏览器中直接编写并运行真实代码,并获得即时 AI 反馈 — 无需本地设置。

此课程中的所有课时

  1. 原始值与 CaseIterable
  2. 用于丰富数据的关联值
  3. 间接枚举与递归结构
  4. 使用枚举建模状态机
← 返回 Swift Academy