我正在尝试在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数据的每个字段?
此致
答案 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模式的所有实体,因此您现在可以在回调变量中访问它们。