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

Swift中如何将[Numbers]类型转换为[String]数组?

问题解决方法

首先修正原模型的初始化错误,你原本的init方法里赋值语句写错了,应该将传入的参数赋值给实例属性,同时补全响应模型的类型定义(假设用类实现):

public enum Numbers: String, Codable {
    case one = "one"
    case two = "two"
    case three = "three"
}

public class NumbersResponse {
    public let numbers: [Numbers]
    
    public init(numbers: [Numbers]) {
        self.numbers = numbers // 修正赋值语句
    }
}

接下来解决[Numbers]转[String]的问题:利用枚举的rawValue属性(因为你的枚举是String类型,rawValue就是对应的字符串值),通过map方法遍历转换,正确的计算属性写法如下:

// 若在NumbersResponse类内部定义
public var stringNumbers: [String] {
    numbers.map { $0.rawValue }
}

关键说明

  • 你之前直接返回NumbersResponse.numbers会报错,因为NumbersResponse.numbers是[Numbers]类型,和要求的[String]类型不兼容,必须通过map做类型转换。
  • 注意numbers是实例属性,不能用NumbersResponse.numbers这种静态属性的访问方式,在类内部直接访问当前实例的numbers即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 17:45:40