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
相关产品推荐
相关产品推荐

