Apollo iOS 1.3 迁移指南
从 1.2 版本到 1.3 版本
本指南描述了将您的代码从 1.2 版本迁移到 1.3 版本的过程Apollo iOS。如果您使用的是 1.2 版本之外的版本,请遵循相关的迁移指南。
虽然 1.3 是一个较小的版本升级,但在这个版本中修复了一些几个关键的错误,这需要在升级期间进行一些破坏性变化。虽然我们努力使小版本的升级路径无缝,但这些问题在没有要求进行迁移的情况下无法得到合理的解决。
请求链拦截器
请求链拦截器实现的ApolloInterceptor
协议在这个版本中有所改动。您所使用的任何自定义拦截器现在都必须能够通过一个新属性来识别自己。
请求链协议在这个版本中也进行了小的改动。
函数 proceedAsync(request:response:completion:)
已经被弃用,并被一个添加了拦截器以便于识别的同名函数所替代。这消除了请求链维护拦截器列表索引位置的需要。
迁移步骤
为了使您的自定义拦截器符合协议变更,您可以将以下行添加到您的拦截器代码中。
拦截器识别
public var id: String = UUID().uuidString
无论您的自定义拦截器在哪里回调到请求链,您应将proceedAsync(request:response:completion:)
的调用替换为新的函数调用。
解决弃用警告
chain.proceedAsync(request: request,response: response,interceptor: self,completion: completion)
保留关键字类型名称后缀
当使用某些关键字作为GraphQL类型的名称时,生成的代码将无法编译,因此我们决定将用于选择集的相同保留关键字列表强制应用于以下其他GraphQL类型:
- 自定义标量
- 枚举
- 片段
- 输入对象
- 接口
- 对象
- 联合类型
这些类型的名称将根据以下保留关键字列表进行(不区分大小写)检查:
任何
数据字典
文档类型
片段
片段容器
父类型
协议
模式
选择
自身
字符串
布尔
整数
浮点
双精度浮点
ID
类型
错误
_
如果找到保留关键字,将根据其表示的类型为其类型名称添加后缀,以下是一个枚举示例
枚举示例
enum Type {valueOnevalueTwo}
这将生成一个类似以下的Swift枚举
生成的枚举
enum Type_Enum: String, EnumType
并非所有保留关键字都会引起编译错误,但我们认为最好应用后缀到所有关键字。如果您当前使用任何列出的保留关键字,则这可能会导致您的生成代码发生一些小的中断改动,您需要将这些关键字的使用更新为新后缀名称。