Swift:如何将枚举值转换为字符串?


在 Swift 中,您可以通过 `rawValue` 属性将枚举值转换为字符串。前提是该枚举具有字符串类型的原始值。如果枚举没有原始值,则可以使用 `String(describing:)` 初始化器来获取枚举值的字符串表示形式。此外,您还可以使用 `CustomStringConvertible` 协议。

示例 1

使用 `rawValue` 属性将枚举值转换为字符串。在本例中,`Fruit` 是一个具有字符串类型原始值的枚举。`rawValue` 属性用于获取 `myFruit` 枚举值的字符串表示形式,即“Apple”。

import Foundation
enum Fruit: String {
   case apple = "Apple"
   case banana = "Banana"
   case orange = "Orange"
}
let myFruit = Fruit.apple
let fruitString = myFruit.rawValue
print("Enum value: \(fruitString)")

输出

Enum value: Apple

示例 2

如果枚举没有原始值,则可以使用 `String(describing:)` 初始化器来获取枚举值的字符串表示形式。在本例中,`Direction` 是一个没有原始值的枚举。`String(describing:)` 初始化器用于获取 `myDirection` 枚举值的字符串表示形式,即“north”。

import Foundation
enum Direction {
   case north
   case south
   case east
   case west
}
let myDirection = Direction.north
let directionString = String(describing: myDirection)
print("Enum value: \(directionString)")

输出

Enum value: north

示例 3

自定义枚举的字符串表示形式。在本例中,我们有一个名为 `Suit` 的枚举,它实现了 `CustomStringConvertible` 协议。我们提供了 `description` 属性的自定义实现,该属性返回每种花色的相应符号。当我们创建一个 `Suit` 实例并打印它时,将使用自定义字符串表示形式。

import Foundation
enum Suit: CustomStringConvertible {
   case spades, hearts, diamonds, clubs
    
   var description: String {
      switch self {
         case .spades:
            return "♠︎"
         case .hearts:
            return "♥︎"
         case .diamonds:
            return "♦︎"
         case .clubs:
            return "♣︎"
      }
   }
}
let suit = Suit.hearts
print(suit)

输出

♥︎

结论

总之,在 Swift 中有多种方法可以将枚举值转换为字符串:

  • 如果枚举具有字符串类型的原始值,则可以使用 `rawValue` 属性来检索枚举值的字符串表示形式。

  • 您可以实现 `CustomStringConvertible` 协议并提供您自己的 `description` 属性或方法的实现。如果您希望自定义枚举项的字符串表示形式,则可以使用此方法。

  • 如果枚举没有原始值并且您不想提供特定的字符串表示形式,则可以使用 `String(describing:)` 初始化器来获取枚举值的默认字符串表示形式。

根据您特定用例的需求,选择最符合您需求的策略。

更新于: 2023年5月4日

5K+ 浏览量

开启您的 职业生涯

通过完成课程获得认证

立即开始
广告