Как читать результаты с помощью Apollo Client для iOS
Я пытаюсь использовать GraphQL в iOS с клиентом Apollo. У меня есть следующая мутация:
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, которое принадлежит данным UserType, определенным в моей схеме grapql?
С уважением
1 ответ
Вопрос не ясен на 100%, поскольку в нем отсутствует код вашей мутации: мутация GraphQL должна возвращать хотя бы одно значение, которое вы должны определить. Так как я не уверен в вашем методе
login(user: String!, password: String!): UserType
Я даю вам простой пример для обновления существующего userProfile с мутацией GraphQL, а затем возвращает каждое поле, определенное в вашей схеме для 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, которые должны быть возвращены из мутации, вы можете получить к ним доступ теперь в переменной обратного вызова.