0

我正在尝试在带有 Apollo 客户端的 iOS 中使用 GraphQL。我有以下突变:

login(user: String!, password: String!): UserType

UserType 看起来像这样:

id: ID
user: String!
password: String!
name: String
lastname: String
email: Email!
groups: [GroupType]

在 iOS 中,我按照文档所述配置了 aopllo 客户端并且运行良好,但我不知道如何访问响应中的每个字段。当登录成功时,我想读取我收到的 json 作为 UserType 字段的响应,所以,我这样做:

apolloClient.perform(mutation: loginMutation) {
                resultsGQL, error in
...
}

我的问题是,如何从 resultGQL 中读取属于我的 grapql 模式中定义的 UserType 数据的每个字段?

问候

4

1 回答 1

0

这个问题不是 100% 清楚的,因为它缺少一些代码你的突变:一个 GraphQL 突变必须返回至少一个值,你必须定义它。因为我不确定你的方法

login(user: String!, password: String!): UserType

我给你一个简单的例子,用 GraphQL 突变更新现有的 userProfile,然后返回在你的模式中为 userType 定义的每个字段。让我们假设您有一个 userType(因此知道相应的 userId)并且您想要修改电子邮件:

mutation updateUserProfile($id: ID!, $newEmail: String) {
updateUser(id: $id, email: $newEmail) {
    id
    user
    password
    name
    lastName
    email 
   }
}

如您所见,执行后

updateUser(id: $id, email: $newEmail)

所有返回值都在以下 {...} 括号内定义,因此可以在您的回调变量中访问

resultsGQL

这意味着:

apolloClient.perform(mutation: loginMutation) { resultsGQL, error in
    if let results = resultsGQL?.data {
      // "results" can now access all data from userType
  }
}

由于您定义了要从突变返回的 userType 模式的所有实体,因此您现在可以在回调变量中访问它们。

于 2018-01-06T11:48:54.310 回答