|  |      1Zrocky      206 天前 写得很好 | 
|  |      2Julaoshi      206 天前 文章不错。不过博客有广告,太影响阅读体验了。 | 
|  |      3RayJiang9      206 天前 写得很好,枚举的关联值很好用的,在实际项目中也是在大量使用。 举个栗子,处理 IM 的自定义消息可以这样写: 由于枚举的特性,所有写 switch 的地方(如果没有 default ),会编译报错,这样在新增自定义消息类型的时候不会漏掉所有要改的地方。 其次可以把需要用的字段从 JSON 里解析出来,放进枚举方便使用。 enum IMMessageType { /// 0 (普通文本) case text(content: String) /// 1 (详情) case detail(id: Int, name: String) init(from json: JSON) throws { guard let messageType = json["messageType"].int else { throw CommonAPIError.invalidResponsor } switch messageType { case 0: self = .text(content: json["content"].stringValue) case 1: self = .detail(id: json["detailID"].intValue, name: json["detailName"].stringValue) default: throw CommonAPIError.invalidResponsor } } var displayText: String { switch self { case .text(let content): return content case .detail(_, let name): return "详情-\(name)" } } } | 
|  |      5RayJiang9      205 天前 @Xheldon #4 Codable 我不太喜欢用,相比之下还是习惯用 SwiftyJSON 配合脚本生成 Model ,Codable 搭配 @propertyWrapper 可以实现 json 不一一对应,可以看下这个库 BetterCodable | 
|  |      71OF7G      64 天前 很有帮助 |