You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Swift中如何将String字符串转换为Enum枚举对应成员?

Swift字符串转枚举成员实现方法

优先方案:指定枚举Raw Value类型为String

你只需要给原枚举声明添加String类型的原始值声明,Swift会自动生成和case名称完全匹配的字符串原始值,同时内置可失败构造器init?(rawValue: String),直接满足转换+校验需求:

// 修改后的枚举定义
enum Numbers: String {
    case One
    case Two
    case Three
}

在你的方法中直接调用构造器即可:

func handle(name: String) {
    // 构造失败返回nil,刚好用来做合法性校验
    guard let targetEnum = Numbers(rawValue: name) else {
        print("当前name不存在对应的枚举成员")
        return
    }
    // 转换成功后即可使用targetEnum
    print("转换结果:\(targetEnum)")
}

备选方案:手动自定义构造器

如果你的枚举已经绑定了其他类型的原始值,不能修改为String类型,可以手动添加自定义转换构造器:

enum Numbers {
    case One
    case Two
    case Three
    
    // 自定义可失败构造器
    init?(from string: String) {
        switch string {
        case "One": self = .One
        case "Two": self = .Two
        case "Three": self = .Three
        default: return nil
        }
    }
}

方法中使用方式:

func handle(name: String) {
    guard let targetEnum = Numbers(from: name) else {
        print("非法的name参数")
        return
    }
    // 后续业务逻辑
}
  • 注意事项:
    • 上述实现默认大小写严格匹配,如果你需要忽略大小写校验,可以将传入的字符串和枚举的case名统一转换为大写/小写后再做匹配
    • 优先选择第一种方案,无需手动维护映射关系,新增/删除枚举case时自动同步,维护成本更低

内容的提问来源于stack exchange,提问作者Prudhvi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.10 22:24:01