将变量声明为可选值时,Swift 枚举没有名为 'rawValue' 的成员

标签 swift enums xcode6

我正在查看 Swift 编程语言,我遇到了一个问题,我无法区分它是否是 Lauguage 的问题(我使用的是 Xcode 6.1 版(6A1052c)):

enum Rank: Int {
    case Ace = 1
    case Two, Three, Four, Five
    func simpleDescription() -> String {
        switch self {
        case .Ace: return "Ace"
        default: return String(self.rawValue)
        }
    }
}

var rank: Rank?
rank = Rank(rawValue: 2)
println(rank.rawValue)

在最后一行,它抛出一个错误:'Rank?'没有名为 rawValue``

的成员

但是如果像var rank: Rank这样声明变量,并将rank = Rank(rawValue: 2)修改为rank = Rank(rawValue: 2 )!,可以通过,没有报错。

最佳答案

从 rawValue 实例化一个枚举返回一个可选的枚举,Rank? 在你的例子中。为了访问可选枚举的属性,您必须将其解包,以获得 Rank

var rank: Rank?
rank = Rank(rawValue: 2)
if(rank != nil){
    println(rank!.rawValue)
}  

您还可以将 Rank 输入为 Rank 而不是 Rank?

var rank: Rank
rank = Rank(rawValue: 2)! //make sure you know this will always return a Rank. If it's nil your program will crash
println(rank.rawValue)

关于将变量声明为可选值时,Swift 枚举没有名为 'rawValue' 的成员,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26451696/

相关文章:

ios - 快速执行异步任务后键盘不会关闭

java - 如何使用 Comparator 定义自定义排序顺序?

ios - 在枚举中执行函数

ios - 如何在用户输入时获取输入到 UITextView 中的文本长度?

swift - 如何从其 ASCII 值中获取字符?

swift - 如果视频超过 12 秒则没有声音

xcode - 没有显示 segue 显示的快速后退按钮

java - 在 Java 中有一种方法可以定义 char 类型的枚举

c++ - Xcode C++::架构 x86_64 的重复符号

ios - Swift Playground 和模拟器错误 (ipc/mig) 服务器死机,无法启动 iOS 模拟器