参考: https://www.apollographql.com/docs/ios/ 官方文档
GraphiQL工具:https://n1kqy.sse.codesandbox.io/
首先 pod "Apollo"
导入完之后打开项目(下图中的项目是我已经配置好了的,所以有些没有的文件和脚本不用管)
1.png首先按照上图中的顺序依次选择 添加一个新脚本,并把名称改为 Apollo CLI
,再拖动到Dependencies
和Compile Sources
之间,如下图
3.png
再在脚本的文本框粘贴:(这个意思是下载服务器的schema.json文件)
SCRIPT_PATH="${PODS_ROOT}/Apollo/scripts"
cd "${SRCROOT}/${TARGET_NAME}"
"${SCRIPT_PATH}"/run-bundled-codegen.sh schema:download --endpoint="https://n1kqy.sse.codesandbox.io/"
编译代码,完成后项目文件夹里会多一个 schema.json
文件
把它拖到项目里,可以不勾选Add to target
(因为它只用于生成添加到target的代码)
然后可以在 GraphiQL工具:https://n1kqy.sse.codesandbox.io/ 的网站上输入以下内容,点击运行。会得到等下在项目里要请求的数据,可用做对比
query LaunchList {
launches {
cursor
hasMore
launches {
id
site
}
}
}
image.png
再回到Xcode里,新建一个空文件模板,命名为 LaunchList.graphql
,将其保存在与schema.json
文件相同的级别目录(LaunchList是上面你创建的模型的名字)
将上面GraphiQL中输入的内容复制粘贴到.graphql
文件中
接下来回到刚才添加脚本的地方,把最后一行注释掉(前面输入一个#),然后在下面粘贴下面的代码
"${SCRIPT_PATH}"/run-bundled-codegen.sh codegen:generate --target=swift --includes=./**/*.graphql --localSchemaFile="schema.json" API.swift
编译一下,schema.json
同一目录下会出现一个API.swift
,将它拖入到xcode中,并且勾选Add to target
打开API.swift
文件,会看到里面的结构和LaunchListQuery
是匹配的。如果在LaunchList.graphql
中注释掉id
属性,再次编译,API.swift
文件里的id
也随之不见了。
这一系列操作完成后,现在你的项目目录应该是这样的,多了红框中的3个文件
image.png之后就可以开始用代码进行测试了
class Network {
static let shared = Network()
private(set) lazy var apollo = ApolloClient(url: URL(string: "https://n1kqy.sse.codesandbox.io/")!)
}
···
Network.shared.apollo.fetch(query: LaunchListQuery()) { result in
switch result {
case .success(let graphQLResult):
print("Success! Result: \(graphQLResult)")
case .failure(let error):
print("Failure! Error: \(error)")
}
}
如果一切没什么问题的话控制台会打印类似下面的内容:
image.pngOK,这样就集成完毕了,实际使用的话,只需把脚本和代码里的服务器地址、模型属性改为自己的就行了, 更多的操作请自行查看官方文档
网友评论