Avatar ·

如何让 enum 符合 Decodable 协议:Swift 完整指南

大家好!我是一名 iOS 开发新手,遇到了将 JSON 解码为 enum 的问题。 我有一个用于订单状态的 enum: ```swift enum OrderStatus: String { case pending case confirmed case shipped case delivered case cancelled } ``` 我从服务器收到 JSON: ```json { "id": 1234, "status": "pending" } ``` 我尝试使用 JSONDecoder 进行解码: ```swift struct Order: Decodable { let id: Int let status: OrderStatus } ``` 但 Xcode 报错:"Type 'OrderStatus' does not conform to protocol 'Decodable'" 我已经为 enum 添加了 String 作为 rawValue,以为这样会有效。但并没有。我哪里做错了?是否需要自己实现 init(from:) 方法,还是有更简单的方法? 另外,如果服务器发送的是数字而不是字符串(例如,0 表示 pending,1 表示 confirmed),或者 JSON 中出现了 enum 中不存在的未知值,该怎么办?提前感谢帮助!