问题标签 [apollo-ios]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
670 浏览

swift - 如何从 Apollo iOS Closure 中获取价值?/ 如何在函数中“包装”闭包?

我正在使用 Apollo iOS 来获取 GraphQL 查询。我想将apollo.fetch()查询闭包移动到类中的单独函数。此类将包含对 apollo 客户端的静态引用以及用于执行 GraphQL 突变和查询的函数。

我正在尝试以下操作:

每当我添加该行时myResult = result?.data,我都会收到错误Generic parameter 'Query' could not be inferred。

但是,当注释掉该行时,它可以正常工作,但显然该功能毫无意义。最终我想概括这个函数,以便我可以将查询传递给它,但是我如何从这个基本闭包中获取数据?

本质上,问题是,我如何在函数中“包装”闭包?

这个函数的重点是能够在函数中获取表格视图部分的行数:

但是,视图会在此函数运行之前加载。我认为这是因为apollo.fetch()异步运行?

0 投票
2 回答
2468 浏览

ios - 集成 apollo ios 客户端时出现“为未命名项目加载架构”错误

我正在尝试集成 apollo iOS 客户端,在完成所有步骤后,我在运行构建阶段脚本时遇到了错误。所以总共有三个错误。一个是

  1. 初始化 Apollo GraphQL 项目“未命名项目”时出错。
  2. 错误:“加载未命名项目的架构”中的错误。
  3. TypeError:无法读取 Object.error 处未定义的属性“减少”。

请注意在 node_modules/@oclif 中的这种计算。

Error initializing Apollo GraphQL project "Unnamed Project": Error: Error in "Loading schema for Unnamed Project": TypeError: Cannot read property 'reduce' of undefined

0 投票
1 回答
776 浏览

swift - 如何将 Hasura/postgres uuid 与 apollo-ios 和 swift 一起使用

我在 Hasura (Postgres) 中使用 nativeuuid作为字段数据类型定义了一个表。我的目标是从 Swift 创建一个更新突变,但 uuid 类型并没有从 Postgres 通过 Hasura 和 Apollo 隐式映射到 Swift。Hasura 文档声明 uuid 类型支持使用String,但是当我在更新突变中定义变量时String!

我从 Apollo 代码生成构建步骤中得到一个错误,即Variable "$code" of type "String!" used in position expecting type "uuid".. 当我将其更改uuid!

代码生成步骤完成,生成 API.swift,但出现了几个编译错误实例,Use of undeclared type 'uuid'现在由于 Apollo 生成的 API.swift 编译过程中出现故障。

有人可以为我指出正确的方向,让 Swift 知道什么是 uuid 或定义我的查询,以便我可以通过 Apollo 管理的突变将字符串作为参数传递?非常感谢!

0 投票
1 回答
209 浏览

ios - Apollo-iOS 客户端的 GraphQL 解析器

如何编写解析器以在客户端(在我的 swift 项目中)使用 Apollo-iOS 进行多个 API 调用以完成 GraphQL 查询?

例如:如果要从具有名称和年龄参数的查询构造一个 Person 对象 - 我必须name从一个服务调用和age另一个服务调用中获取并将它们缝合以形成 Person 对象,那么解析器的外观和位置我应该写吗?

任何帮助表示赞赏。

0 投票
1 回答
599 浏览

ios - 订阅失败错误 WSError(type: Starscream.ErrorType.upgradeError message: \"Invalid HTTP upgrade\", code: 400)?

我需要集成subscription到我的 iOS 应用程序中。subscription在. _ localhost_ graphiql我已经将我的后端部署在Heroku. 我正在使用apollo-server而不是hasura. 我subscriptions的不适用于 Heroku 提供的 url,但它在localhost. Queries和url都mutations可以正常工作。所以我试图从我的 iOS 客户端访问我的。我将基本网址保留为我的本地主机。查询和突变部分适用于我的 iOS 客户端,但我的部分不起作用。localhostHerokusubscriptionsubscription

我已经通过添加这个配置了我的 Apollo 客户端以进行订阅

我也尝试替换httpws如下

订阅代码如下

但我从我的 iOS 客户端收到如下错误

此外,当我Graphiql用于我的订阅并替换为我的订阅localhostHerokuurl 时,我收到以下错误。

s

0 投票
1 回答
608 浏览

json - Apollo graphQL:在 iOS swift 中使用自定义标量时解码数组时出错

我有如下所示的架构。这里 question_r 是作为 Json 接收的字典数组。我面临转换它的问题。有什么办法可以成功解码吗?

这是架构

我的脚本如下所示:

SCRIPT_PATH="${PODS_ROOT}/Apollo/scripts" cd "${SRCROOT}/${TARGET_NAME}" "${SCRIPT_PATH}"/run-bundled-codegen.sh codegen:generate --target=swift --includes= ./**/*.graphql --passthroughCustomScalars --localSchemaFile="schema.json" API.swift

这是我定义 Json 的类型别名。它可以是字典或字典数组

有什么解决方法吗?我在这里错过了什么吗?

0 投票
1 回答
240 浏览

xcode - 依赖源中的 SwiftLint 配置与主项目中的 SwiftLint 冲突

我有一个使用 SwiftLint 和 Swift Package Manager 的项目。我正在引入的一个包(Apollo)反过来又引入了另一个框架(Stencil)。框架 (Stencil) 在其源代码中有一个带有特定swiftlint_version集的 swiftlint.yml 文件。

当我尝试构建我的项目时,我的 SwiftLint 失败了,因为swiftlint_version在 Stencil 的源代码中指定的内容得到尊重,并且与我安装的不同(我安装了更新的版本)。

我的项目是否设置错误以使用 SwiftLint?我只有源代码中的 yml 文件和通过 Homebrew 安装的 SwiftLint,然后我的项目在构建阶段通过脚本运行 SwiftLint。

0 投票
1 回答
497 浏览

caching - 为部分 graphQL 查询指定缓存策略

在 Apollo 的 GraphQL 版本中,有一些获取策略指定获取查询是应该从服务器获取数据还是使用本地缓存(如果有数据可用)。

此外,缓存规范化允许使用缓存来减少需要从服务器获取的数据量。例如,如果我请求对象 A 和对象 B,但之前我请求了 A 和 C,那么在我当前的查询中,它将从缓存中获取 A,并从服务器获取 B。

但是,它们为整个查询指定缓存策略。我想知道是否有一种方法可以在各个字段上指定 TTL。

从开发人员的角度来看,我希望能够在我的查询中指定我想要缓存一些我请求的信息,而不是其他信息。例如,采用以下查询:

换句话说,对于一个固定id值(并假设这是唯一涉及人员对象或其字段的查询):

  • 第一次进行此查询时,我从服务器获取所有三个字段。
  • 现在,如果我在几秒钟内再次进行此查询,我应该只legalName从服务器获取第三个字段 (),从缓存中获取前两个。
  • 现在,如果我等待超过一天,然后再次进行此查询,我会birthCertificate从缓存中获取,然后从服务器获取age+ 。legalName

目前,要按照我想要的方式执行此操作,我最终编写了三个不同的查询,每个查询一个 TTL。有没有更好的办法?

更新:在 iOS 客户端 ( https://github.com/apollographql/apollo-ios/issues/142 )上完成的缓存计时有一些进展,但没有什么特别的?

0 投票
0 回答
422 浏览

swift - Apollo iOS GraphQL 订阅错误:“无效的 HTTP 升级”

我正在尝试在我的 iOS 应用程序中从 SoundtrackYourBrand 获得 GraphQL 订阅。查询/突变工作正常,但是当我使用 Web 套接字时,我会收到错误 400 或 403(“无效的 HTTP 升级”)或 1011(无消息),具体取决于我设置授权令牌的方式。

错误 WebSocketError(payload: nil, error: Optional(Starscream.WSError(type: Starscream.ErrorType.upgradeError, message: "Invalid HTTP upgrade", code: 403)), kind: ApolloWebSocket.WebSocketError.ErrorKind.networkError)

错误 WebSocketError(payload: nil, error: Optional(Starscream.WSError(type: Starscream.ErrorType.protocolError, message: "", code: 1011)), kind: ApolloWebSocket.WebSocketError.ErrorKind.networkError)

我正在使用 Apollo 来处理 graphQL API。它适用于突变/查询。我已经按照此处的 Apollo 文档设置了 splitNetwork Transport 。

虽然上面是 Apollo 建议进行授权的方式,但在 SoundtrackYourbrand 文档中它说将令牌设置为查询参数:“您不会使用任何标头,因此需要将令牌作为查询参数传递。”

在这种情况下,我应该像下面这样设置 websocket。

下面的代码给出了协议错误 1011,而上面的代码给出了 400/403“无效的 HTTP 升级”错误。

我的起始网址也应该是:

  1. wss://api.soundtrackyourbrand.com/v2
  2. wss://api.soundtrackyourbrand.com/v2/websocket

查看文档,我认为它应该是 2),但是在 SoundtrackYourbrand工作区中获得订阅后,它使用 1) 我假设我必须使用 1)。

在工作区我使用默认提供的WS URL:wss://api.soundtrackyourbrand.com/v2,然后将授权头设置为“Bearer••••••••••••••••• ••••••••••••••••••••••••••••••••••••••••••...”。这有效,但似乎无法在 Apollo 的 iOS 应用程序中复制它

我究竟做错了什么?

任何帮助将不胜感激!

0 投票
0 回答
320 浏览

ios - Apollo graphql IOS Apollo.JSONDecodingError.couldNotConvert 不接受 geojson 类型

您好,我们的 swift 项目服务层更改为 graphql。

我无法解决一项服务的问题。

当我向邮递员请求该服务时,我得到了这个回复。

在android中它没有给我任何错误,但ios我有一个错误。

我试图添加这个运行脚本,但它不起作用

我该如何解决这个问题你能帮我吗?