【问题标题】:Himotoki vs Swift CodableHimotoki vs Swift Codable
【发布时间】:2018-08-22 08:05:58
【问题描述】:

我有一个项目,我在其中使用 Himotoki 库对 JSON 进行编码和解码。现在,Swift 4 提供了 Codable 协议。我应该切换到它还是 Himotoki 提供的某些功能无法用 Codable 实现?

【问题讨论】:

  • 我从未使用过 Himotoki,但觉得这个问题很有趣。您是否介意添加 Himotoki 提供的一些您从中受益的功能?我是Codable 的快乐用户,所以我想看看这个库做了什么。
  • 其实这是一个遗留问题。当 swift 中没有提供可编码协议时,使用了 Himotoki 框架。在迁移到 swift 4 时,Himotoki 和 Foundation 的可编码协议之间出现了冲突。所以现在,我正在考虑删除 Himotoki。但因为它在我的项目中随处使用。我只是想检查一下我不会引入一些回归。

标签: json swift4 decode codable


【解决方案1】:

视情况而定。

这取决于你能够如何使用 Himotoki 所没有的 Codable 功能,即

  • 编码

    您是否有可能希望在未来的某个时候对您的模型进行编码?

  • 自动生成的Codable 实现

    您的模型是否具有非属性列表类型的属性?

  • 不仅从 JSON 解码/编码

    您是否需要解码其他类型的数据表示,例如未来的二进制?

此外,Decoder 接受 Data 实例作为输入,而您可以使用 DictionaryDatafor Himotoki。因此,如果获取字典对您来说更方便,Codable 会不太方便,因为您需要将其转换为Data

最后但同样重要的是,Codable 在社区中广为人知。使用 Himotoki 可能会使其他人更难理解代码,尤其是那些自定义运算符。 Himotoki 目前只有约 700 颗星。将此与拥有数千个的 ObjectMapper 进行比较。如果您的代码是私有的,这显然不是问题。

【讨论】:

  • 谢谢。在我的项目中,我正在使用 himotoki 将 JSon 解码为结构。我必须添加编码函数来创建与 Alamofire 一起使用的字典来发送数据。顺便说一句,Alamofire 还不支持处理 Codable 响应。
  • 这个问题和ObjectMapper一样。为什么要使用它,因为您可以使用 Codable 协议简单地管理对象并避免依赖外部框架。
  • 仅通过查看 Himotoki 的 README 似乎并没有继续支持编码。如果使用 Codable 的 Alamofire 真的很不方便,并且如果你的模型的 Codable 实现不能自动生成,那么我建议使用 ObjectMapper,因为它可以直接编码到字典。最终决定权在你。我给了你一些思考的问题。
猜你喜欢
  • 1970-01-01
  • 2019-05-04
  • 2019-03-11
  • 2018-07-09
  • 1970-01-01
  • 2021-05-24
  • 2021-01-18
相关资源
最近更新 更多