将Apollo iOS中的operationName参数移除,需要在Apollo iOS客户端代码中进行以下修改:
在ApolloClient.swift文件中找到以下两个方法:
func fetch(
query: Query,
cachePolicy: CachePolicy,
contextIdentifier: UUID? = nil,
queue: DispatchQueue = .global(qos: .userInitiated),
resultHandler: OperationResultHandler? = nil
) -> ApolloCancellable
func watch(
query: Query,
cachePolicy: CachePolicy,
queue: DispatchQueue = .global(qos: .userInitiated),
watcherHandler: GraphQLQueryWatcher.ResultHandler? = nil,
resultHandler: OperationResultHandler? = nil
) -> GraphQLQueryWatcher
将它们的定义从上面的样式更改为以下方式:
func fetch(
query: Query,
cachePolicy: CachePolicy,
contextIdentifier: UUID? = nil,
queue: DispatchQueue = .global(qos: .userInitiated),
resultHandler: OperationResultHandler? = nil
) -> ApolloCancellable where Query: PersistedQuery, Query.Variables == Query.Data.Variables
func watch(
query: Query,
cachePolicy: CachePolicy,
queue: DispatchQueue = .global(qos: .userInitiated),
watcherHandler: GraphQLQueryWatcher.ResultHandler? = nil,
resultHandler: OperationResultHandler? = nil
) -> GraphQLQueryWatcher where Query: PersistedQuery, Query.Variables == Query.Data.Variables
然后添加以下extension:
extension PersistedQuery {
var operationName: String? { return nil }
}
现在,您应该可以使用Apollo iOS客户端而不必指定每个查询的操作名称来进行查询和观察。