5. 执行您的第一次查询
要使用在RocketReserverAPI中生成的RocketReserverAPI
,首先创建一个ApolloClient
实例。这个实例采用您的生成代码,并使用它对您的服务器进行网络调用。建议该实例是单例或静态实例,可以从代码库中的任何地方访问。
创建一个ApolloClient
在
RocketReserver
中创建一个名为Network.swift
的新Swift文件。将目标设置为RocketReserver
并在文件顶部添加import Apollo
。现在请将以下代码添加到文件中
Network.swift
class Network {static let shared = Network()private(set) lazy var apollo = ApolloClient(url: URL(string: "https://apollo-fullstack-tutorial.herokuapp.com/graphql")!)}
实现查询
为了确保您的ApolloClient
实例能够正确与服务器通信,请转到LaunchListViewModel
,添加以下导入项,然后在TODO下面添加以下代码到init()
方法中:
LaunchListViewModel.swift
import Apolloimport RocketReserverAPI...init() {// TODO (Section 13 - https://apollo.graphql.net.cn/docs/ios/tutorial/tutorial-subscriptions#use-your-subscription)Network.shared.apollo.fetch(query: LaunchListQuery()) { result inswitch result {case .success(let graphQLResult):print("Success! Result: \(graphQLResult)")case .failure(let error):print("Failure! Error: \(error)")}}}
测试您的查询
构建并运行您的应用程序。如果最近没有人使用过,网络主机可能需要几秒钟来启动您的GraphQL服务器,但一旦启动,您应该看到如下类似的结果:
这意味着请求已正确执行,您现在有一个发射场列表🚀🚀🚀。
继续删除添加到 init()
方法中的代码,仅剩稍后处理的 TODO:
LaunchListViewModel.swift
init() {// TODO (Section 13 - https://apollo.graphql.net.cn/docs/ios/tutorial/tutorial-subscriptions#use-your-subscription)}
接下来,我们来 将此数据处理与您的 UI 连接