如何使用Apollo Client for iOS读取结果

时间:2017-12-01 02:28:46

标签: ios swift graphql apollo-client apollo-ios

我正在尝试在iOS中使用GraphQL和Apollo Client。我有以下突变:

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

,UserType如下所示:

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

在iOS中,我已经按照doc说的那样配置了aopllo客户端并且工作正常,但我不知道如何访问响应中的每个字段。当登录成功时,我想读取我收到的带有UserType字段的响应的json,所以,我这样做:

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

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

此致

1 个答案:

答案 0 :(得分: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模式的所有实体,因此您现在可以在回调变量中访问它们。