swift - 使用关联值时获取枚举名称

标签 swift enums

我有一个枚举定义如下

enum Fruit {
    case Apple(associatedValue: String)
    case Orange(associatedValue: String)
}

我有一个接受 Fruit 类型参数的函数

func printNameOnly(fruit: Fruit) {

}

在此函数中,我想将枚举大小写作为字符串获取,即我想获取字符串“Apple”或“Orange”,而不考虑关联值是什么。这对 Swift 来说可能吗?

我显然可以编写一个函数,该函数采用 fruit 枚举并使用 case 语句返回一个字符串,但我试图找到一种方法来避免这种情况,因为我想要的字符串是枚举 case 名称本身。

最佳答案

试试这个(Swift 3.1)。涵盖相关或常规案例。

enum Fruit {
    case banana
    case apple(String)
    case orange(String)

    var label:String {
        let mirror = Mirror(reflecting: self)
        if let label = mirror.children.first?.label {
            return label
        } else {
            return String(describing:self)
        }
    }
}

print(Fruit.banana.label) // "banana"
print(Fruit.apple("yum").label) // "apple"

关于swift - 使用关联值时获取枚举名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35374588/

相关文章:

java - Switch 语句中的 PowerMockito 枚举抛出 NPE

c# - 在枚举值上切换大小写

iOS 8 AVFoundation - 如何在支持的设备上启用视频稳定

ios - Swift iOS 内存使用量在运行时增加

swift - 为什么 swift 语言的设计者会选择用下划线而不是逗号来分隔数字

C# 枚举 : can they take members and functions like java enums?

ios - Swift 子类复杂子类型

string - swift NSLocalizedString 字符串获取值错误

ios - 通过辅助方法呈现 View Controller

c++ - 非顺序整数 C++ 枚举的最佳方法是什么