枚举类型:"无法构建,因为它没有可访问的初始化器"。

12

我无法使用rawValue初始化程序来初始化枚举。有什么想法吗?下面是错误注释:

//: Playground - noun: a place where people can play
// Xcode Version 7.3 (7D175)

import UIKit

enum Theme {
    case Default, Dark, Graphical
}

let possibleTheme = Theme(rawValue: 1) 
// Error: 'Theme' cannot be constructed because it has no accessible initializers.

1
枚举没有原始类型,您需要添加 enum Theme : Int - vadian
1个回答

32
enum Theme: Int {
    case Default, Dark, Graphical
}

let possibleTheme = Theme(rawValue: 1) // Dark

枚举类型没有原始值,除非你指定其类型。可能的原始值类型有 StringCharacter 和任何数字类型。文档

好的,这是一个有效的答案,但它的重点是什么呢?为什么要用 int 构造枚举?为什么在这种特定情况下关心它所支持的内容。这样做只会导致麻烦。 - rafalio
3
这完全取决于 OP 的项目。有时,如果你拥有一个 UISegmentedControl,从一个 Int 创建一个 enum 可能非常方便。 - Tim Vermeulen
老实说,只是在学习UIAppearance的教程。 https://www.raywenderlich.com/108766/uiappearance-tutorial - Ryan Huebert
嗨,Ryan,你最终解决了这个问题吗?我正在做同样的教程,也遇到了这个问题。但是,由于枚举返回的是UIColor,我不确定该如何解决这个问题,因为正如@TimVermeulen指出的那样,原始值类型只能是字符串、字符和数字类型。 - Jim

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接