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

SwiftUI自定义String类型枚举传参报类型转换错误求助

错误原因
  • 你定义的category属性类型是structuralCodes.Category枚举类型,不是String类型。虽然该枚举绑定了String类型的原始值,但Swift不会自动将String转换为对应的枚举实例,直接传入字符串会触发类型不匹配错误。
  • 枚举的原始值只是枚举和对应类型转换的介质,本身不等同于枚举实例,必须显式完成转换或者直接传入枚举case。
解决方法

提供两种常用可选方案:

方案1:直接传入枚举case(最推荐)

编译期即可完成类型校验,性能最高,修改初始化代码如下:

var structuralcodes = [
    structuralCodes(index: 1, title: "ASCE", icon: "wind", isFeatured: true, category: .asce, imageName: "ASCE"),
    structuralCodes(index: 2, title: "AISC", icon: "wind", isFeatured: false, category: .aisc, imageName: "AISC"),
]

上下文可自动推断枚举类型,所以可以直接使用.asce/.aisc的简写形式,无需写全枚举路径。

方案2:通过原始值显式构造枚举实例

如果你的分类值确实来源于接口、本地存储等字符串格式的数据源,可以调用枚举的原始值构造器生成实例:

// rawValue构造器为可失败构造器,返回Optional类型,建议添加兜底逻辑避免空值
structuralCodes(index: 1, title: "ASCE", icon: "wind", isFeatured: true, category: structuralCodes.Category(rawValue: "ASCE") ?? .asce, imageName: "ASCE")

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 02:06:03