Итак, я изучаю GraphQL, используя Apollo и GraphCool в iOS. Из различных уроков, которые я комбинировал, вот шаги, которые я сделал.
- Установить
npm
- Установка
graphcool
с использованием npm
- Установка
apollo
CLI с использованием npm
- Создать новый проект в Xcode
- Инициируйте новый сервис Graphcool под названием «сервер» в папке проекта, который создал несколько файлов, включая
types.graphql
и package.json
- Разверните серверную службу graphcool и получите конечную точку graphql.
- Создать файл pod с
pod Apollo
, установленным для цели
- До
pod install
- Открыть рабочее пространство Xcode, созданное при установке cocoapod
- Добавить скрипт запуска apollo на этапе сборки
- Поместите фазу сценария запуска apollo выше фазы сценария компиляции
- Скачать схему apollo (
schema.json
)
- Поместите
schema.json
в ту же папку, что и AppDelegate.swift
- Скопируйте
package.json
из папки "server" в ту же папку, что и AppDelegate.swift
- Скомпилировать приложение
До этого шага, это все еще хорошо скомпилировано, так как технически все это генерируется автоматически.
- генерируется Apollo
API.swift
- Добавить
API.swift
к проекту
На автоматически сгенерированном types.graphql
у меня есть тип User
, с элементом id
, name
и dateOfBirth
.
type User @model {
id: ID! @isUnique
name: String
dateOfBirth: DateTime
}
Итак, я создал еще один файл с именем User.graphql
с таким содержимым:
query AllUsers {
allUsers {
id
name
}
}
А затем скомпилируйте приложение. До этого шага все еще работает нормально.
Итак, теперь я экспериментирую, добавив новое поле telephone
на User.graphql
.
query AllUsers {
allUsers {
id
name
telephone
}
}
А потом скомпилировать. На этом этапе Xcode начинает выдавать ошибку:
/ User.graphql: 5: невозможно запросить поле «телефон» типа «Пользователь».
Хорошо, достаточно справедливо. Я не добавил поле telephone
на types.graphql
, поэтому Xcode протестует. Итак, я иду к types.graphql
и добавляю telephone
к типу User
.
type User @model {
id: ID! @isUnique
name: String
dateOfBirth: DateTime
telephone: String
}
После этого я также не забываю повторно развернуть изменения в Graphcool, используя graphcool deploy
.
А потом я перекомпилирую. Xcode все еще выдает ошибку, что он не может запросить поле «телефон» типа «Пользователь».
Итак, вопрос: как мне распространить изменения из types.graphql
, которые я просто добавляю к типу User
?
Я попытался удалить API.swift
, а затем перекомпилировать. Но я все еще получаю ту же ошибку. И API.swift
теперь даже не создается, если процесс компиляции остановлен из-за ошибок.
У меня такое ощущение, что решение очень простое, но я застрял в нем несколько дней и не могу найти никакого решения. Нет учебника, который я нашел обсудить эту проблему. Эти учебные пособия, например, предполагают, что вы вносите изменения в types.graphql
, и XCode автоматически поймет это при интерпретации других файлов graphql. И в Интернете я вряд ли смогу найти кого-то, кто сталкивался бы с такой же проблемой, как я.
Может кто-нибудь помочь? Пожалуйста, если кто-то может помочь, пожалуйста, не пропустите этот вопрос. По крайней мере, пожалуйста, дайте мне несколько простых советов, где искать. Если я хочу, чтобы я переписал или перефразировал мой вопрос, чтобы он стал понятнее, скажите мне так, как вам нужно.