我如何根据 Swiftui 中的其他枚举获取枚举值?

How can i get an enum value based on other enum in Swiftui?

我试图从基于其他枚举的枚举中获取字符串,我该怎么做?

我想获取图标:基于GenderString的GenderIcon字符串

我的游乐场:

import UIKit

enum GenderString: String {
    case man = "man"
    case woman = "woman"
}

enum GenderIcon: String {
    case man = "‍♂️"
    case woman = "‍♀️"
}

var gender: GenderString = .man
var genderIcon: GenderIcon = .woman  // case is wowan at start and it's normal


print(" \(gender)")

// I tried these :
print(" \(genderIcon.rawValue(gender))")  // < - I want here the man icon based on gender
print(" \(genderIcon.rawValue(gender.rawValue))")
print(" \(genderIcon(gender))") 
print(" \(genderIcon(gender.rawValue))")


您有两种方法可以做到这一点。第一个是在你的枚举上创建一个 属性,returns 是另一个的值。第二个是在枚举上创建一个 init,将另一个用作 属性。

第一个例子:

enum GenderString: String {
    case man = "man"
    case woman = "woman"

    var icon: GenderIcon {
      switch self {
        case .man: return .man
        case .woman: return .woman
      }
    }
}

enum GenderIcon: String {
    case man = "‍♂️"
    case woman = "‍♀️"
}

var gender: GenderString = .man
gender.icon.rawValue // ‍♂️

第二个例子。

enum GenderString: String {
    case man = "man"
    case woman = "woman"
}

enum GenderIcon: String {
    case man = "‍♂️"
    case woman = "‍♀️"

    init(gender: GenderString) {
      switch gender {
        case .man: self = .man
        case .woman: self = .woman
      }
    }
}

var gender: GenderString = .woman
var icon = GenderIcon(gender: gender)
icon.rawValue // ‍♀️

但是,因为您可以向枚举添加属性,所以您可以跳过为图标使用单独的枚举并将您的示例简化为:

enum Gender: String {
  // Implicitly uses the case name as the raw string value
  case man
  case woman

  var icon: String {
    switch self {
      case .man: return "‍♂️"
      case .woman: return "‍♀️"
    }
  }
}

var man: Gender = .man
man.icon // ‍♂️