【问题标题】:Is it possible to reduce boiler plate code for swift codable protocol是否可以减少快速编码协议的样板代码
【发布时间】:2019-05-08 17:10:56
【问题描述】:

Codable 很棒,它是唯一允许您的 NSMangedObject 模型来回序列化为字典和 JSON 数据的唯一 json 解析解决方案之一。

唯一的问题是只涉及大量样板代码,因为您必须提供编码键的枚举以及您必须为所有属性编写的编码和解码方法。

有什么办法可以减少样板代码。我已经尝试使用 Mirror api 来推断所有属性键及其类型,以便为任何实现它的类动态生成可编码协议的编码和解码方法。但是 Mirror api 不够强大,因为它有时无法提供正确的类类型,并且根本不包含有关 NSManagedObject 类型的信息。

既然,可编码是常规快速使用不可或缺的一部分,我想知道是否可以做一些事情来减少样板代码。

【问题讨论】:

  • 您不需要编写任何代码或包含任何编码键,除非您的要求与默认功能不同。也许你应该在你的问题中展示一些相关的代码示例。

标签: json swift core-data codable


【解决方案1】:

NSManagedObject 类中,不能使用Codable 综合协议扩展。

原因是您必须调用指定的NSManagedObject 初始化器之一将新对象插入托管对象上下文。

【讨论】:

  • 在某种程度上是可能的:stackoverflow.com/questions/44450114/…
  • @MartinR 我认为 OP 希望使用合成的初始化程序/编码器来摆脱在代码中对每个属性进行解码和编码,这在 NSManagedObject(子)类中是不可能的。
  • 你说得对,事情没那么简单。 – 老实说,我不清楚 OP 到底想要什么。
猜你喜欢
  • 2015-01-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-09-22
  • 1970-01-01
  • 2017-07-17
  • 1970-01-01
相关资源
最近更新 更多