微信终端开发团队:新年新语言,WCDB Swift (2)

在 KeyPath 的方案不够完善的情况下,我们转投了 Codable 协议。它是 Swift 4.0 新增的特性,本质是编译前根据定义生成代码,以完成序列化和反序列化的任务。

 

对应到 WCDB,将数据库的字段读写到变量中,其本质就是一个序列化和反序列化的过程,而 CodingKeys 也可能可以用于语言集成查询中的字段映射。

然而,由于这个特性还很新,还没有太多文档对其进行深入介绍,尤其是自定义 Encoder 和Decoder 这部分。

所幸的是,Swift 本身就是开源的。因此,我们参考 swift-corelibs-foundation 中的JSONEncoder 和 JSONDecoder,实现了 TableEncoder 和 TableDecoder,并通过CodingKeys 的定义,映射数据库中的字段。

最终维护了我们对 Pure Swift 的坚持。

 

微信也转向 Swift 开发了吗?

相信这会是大家非常关心的问题。然而,很遗憾,目前还没有。不仅微信,国内外大部分 app 都还没有完全转向Swift,但显然这是个趋势。

 

Google 在 11 月 fork 了 Swift。

大家犹豫不定的原因都大同小异:ABI不稳定,需要将二进制打包进去,增大app体积;某些方面性能还不够好,而且现在多数是与 ObjC 混编,将进一步拉低性能 等等。

而这其中一个很重要的原因就是,Swift 的基础设施还不完善,还难以支撑其大型 app 的开发。而 WCDB Swift 就是这类基础设施之一。

因此,先有 WCDB Swift,未来才有用 Swift 编写微信的可能,这逻辑没毛病。

另一方面,没有微信的上线机制的保护和庞大的用户量的验证,我们需要确保 WCDB Swift 的稳定性。因此,在 WCDB Swift 的第一版本,我们就提供了相对完善的测试用例,用例的代码覆盖率为 91.34%,能够触达绝大部分使用场景。

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/wpswyz.html