我正在使用Apollo客户端进行GraphQL客户端集成。我添加了以下运行脚本,这在官方文档中有建议。
cd "${SRCROOT}/${TARGET_NAME}/GraphQL/Open"
$APOLLO_FRAMEWORK_PATH/check-and-run-apollo-codegen.sh generate $(find
. -name '*.graphql') --schema schema.json
--output APIClient.swift
但是即将出现的问题是所有的标量现在都是字符串。
例如: - 登录时如果我创建了电子邮件和密码的变种,我的模式将响应返回为JSON,而创建的APIClient则将响应显示为String(而不是JSON)。
因此收到错误
Apollo.GraphQLResultError(path: ["login", "response"], underlying: Apollo.JSONDecodingError.couldNotConvert
这是因为收到了String而不是JSON,并且无法将字符串转换为必需的JSON。
有人面临同样的问题吗?
答案 0 :(得分:2)
所以我想通了。解决方案是添加
--passthrough-custom-scalars
在运行脚本中。这将传递像JSON这样的自定义标量。所以完整的脚本变成了
cd "${SRCROOT}/${TARGET_NAME}/GraphQL/Open"
$APOLLO_FRAMEWORK_PATH/check-and-run-apollo-codegen.sh generate $(find
. -name '*.graphql') --schema schema.json --passthrough-custom-scalars
--output APIOpen.swift
现在,当代码与此运行脚本一起重新编译时,JSON标量变为有效。
这花了我很多时间才弄明白。希望它可以帮助某人并节省他们的时间。感谢