Swifty Firebase API @ Ka-ching —第2部分

更新,2018年10月14日:

自撰写本文以来,这些博客文章中描述的概念已被分为两个开源框架,可以在这里找到:

ka-ching-as / FireSwift-Database

Firebase实时数据库的扩展,可以使用“ Codable” Swift类型。 …

github.com

ka-ching-as / RxFireSwift-Database

Firebase实时数据库的RxSwift扩展-ka-ching-as / RxFireSwift-Database

github.com

这篇文章是3部分系列文章的继续,该系列文章首先为Firebase API添加了Codable支持:

在这篇文章中,我们将讨论一个非常有趣且功能强大的主题,它受objc.io Swift Talk#71:带有幻影类型的类型安全文件路径的启发。

在Swift Talk中,Brandon Kase和Florian Kugler讨论了“幻影类型”,简而言之,这些类型永远不会实例化,而只会用作通用约束。 这些是将强类型添加到通常不是强类型的API的强大工具,就像Firebase RTDB Reference使用的路径一样。

请,请去观看关于objc.io的精彩演讲!

在这篇文章中,我们将混合Phantom Types和实际的Codable模型类型,以创建一个真正强大的API。

可以在第一篇博客文章中介绍的github仓库的typesafe_paths分支上找到该文章的示例代码:

ka-ching-as / SwiftyFirebase

SwiftyFirebase – Swift中Firebase API的简单包装

github.com

请注意,本文涉及Firebase,但是所描述的技术可以用于具有“字符串”定义的数据层次结构的任何类型的API。

我们将介绍一种Path类型,该类型基本上包装了一系列路径组件,但在此过程中增加了类型安全性。