首页 > 解决方案 > 如何修复 Swift 枚举 switch case 问题

问题描述

假设我们有这个 enum 和一些 switch throw enum 本身的函数。

import UIKit


enum DumbTest {
    case get(user: String)
    case get(pony: String, tail: String)

    func getSome() -> String {
        switch self {
        case .get(let user):
            return "User muchacha \(user)"
        case .get(let pony, let tail):
            return "Fluttershy \(pony) with \(tail) tail"
        }
    }
}


DumbTest.get(pony: "cute pony", tail: "pink").getSome()

但是,似乎 swift 不明白它的不同情况,显示如下警告:

   1. Case is already handled by previous patterns; consider removing it

   2. Case will never be executed

对于这个字符串

case .get(let pony, let tail):

结果为

DumbTest.get(pony: "可爱的小马", tail: "pink").getSome() 是

"User muchacha (pony: "cute pony", tail: "pink")"

要点

为什么会这样?

标签: swiftenumsswitch-statementswift4.2

解决方案


推荐阅读