iOS
如何在Swift项目中集成GraphQL Apollo iOS客户端
20 分
介绍 在本节中,您将学习如何在您的 swift 项目中安装 apollo ios 客户端,并使用它从 back4app 查询数据。 先决条件 要完成此快速入门,您需要: xcode。 在 back4app 创建的应用程序。 请遵循 新 parse 应用教程 以了解如何在 back4app 创建 parse 应用。 一个存储了一些数据的类(以便您可以检索它)。 1 将 apollo 客户端引入您的 xcode 项目 集成 apollo ios 客户端的最简单方法是使用 cocoapods https //cocoapods org/ 。为了集成它,请按照以下步骤操作: 创建您的 xcode 项目,并在 xcodeproj 文件的同一文件夹中创建一个名为 podfile 的新文件 编辑 podfile 文件并添加以下代码,将字符串 yourprojectnamehere 更改为您项目的名称: \# uncomment the next line to define a global platform for your project platform \ ios, '12 0' target 'yourprojectnamehere' do \# comment the next line if you're not using swift and don't want to use dynamic frameworks use frameworks! \# pods for conferenceplanner pod 'apollo' end 保存文件并打开终端。转到该文件夹并输入: pod install 安装完成后,您应该会有一个格式为 xcworkspace 的新文件。使用 xcode 打开该文件。 2 获取您的模式 您需要一个名为 schema json 的文件,其中包含您的 graphql 端点的模式。您可以通过两种方式获取完整的模式: 使用 back4app graphql 控制台 使用 apollo 我们将讨论这两种选择。选择你最喜欢的那个。 2 1 使用 back4app graphql 控制台检索你的模式 前往你想要检索模式的应用程序的 graphql 控制台,然后在右侧的模式选项卡下,点击下载按钮。 2 2 使用 apollo 检索你的模式 如果你更喜欢使用 apollo,首先你需要通过输入以下命令安装桌面版本: npm install g apollo 然后,运行以下命令,将头部的值替换为你的 appid 和 masterkey: apollo client endpoint= https //parseapi back4app com/graphql https //parseapi back4app com/graphql header="x parse application id yourappidhere" header="x parse master key yourmasterkeyhere" 这将生成一个 aschema json 文件作为输出 3 将您的 schema json 文件添加到项目中 将您下载或检索的 schema json 文件添加到项目的根目录中。这与您的 appdelegate swift 文件所在的文件夹相同。 4 创建您的 graphql 文件 您现在可以使用您的文件和变更创建 graphql 文件。 这些文件必须具有 graphql 扩展名,并至少包含一个查询或变更,以便 apollo 从中创建 swift 代码。 一个有用的约定是将查询、变更或片段与使用它们的 swift 代码放在一起,通过在 \<name> swift 旁边创建 \<name> graphql。 如果您的文件树中没有现有的 graphql 文件,请创建一个非常简单的查询并将其添加到文件树中的 graphql 文件中,以便在您运行代码生成构建步骤时,它实际上能找到一些东西。如果没有,您将收到错误信息:未找到生成代码的操作或片段。 这是一个简单的查询示例,返回 parse 用户: 1 query findallusers{ 2 objects{ 3 find user{ 4 count 5 results{ 6 username 7 } 8 } 9 } 10 } 将该文件添加到您的目标目录中,与您的 schema json 文件处于同一层级: 5 添加代码生成构建步骤 您可以在 xcode 构建过程中调用 apollo,这将自动检索和更新 schema json 文件,以便您的类始终反映您通过调用 check and run apollo cli sh 包装脚本所做的任何更改。 该包装器检查您系统上安装的 apollo 版本是否与您项目中的框架版本兼容。 如果您不检查这一点,您可能会生成与框架中的运行时代码不兼容的代码。 步骤如下: 在您的应用程序目标的构建阶段设置选项卡中,单击 + 图标并选择新建运行脚本阶段。 在创建的运行脚本中,将其名称更改为生成 apollo graphql api。 将此新运行脚本拖到构建阶段的编译源代码上方,以便在编译代码之前执行。 将以下内容添加到运行脚本中: script path="${pods root}/apollo/scripts" cd "${srcroot}/${target name}" "${script path}"/check and run apollo cli sh codegen target=swift includes= / / graphql localschemafile="schema json" api swift 如果您正在使用 xcode 11 beta,请改用此脚本: \# 转到构建根目录,然后返回到 spm 保持的 apollo ios 框架的检出位置。 cd "${build root}" cd " / /sourcepackages/checkouts/apollo ios/scripts" apollo script path="$(pwd)" if \[ z "${apollo script path}" ]; then echo "错误:在您的检出 spm 包中找不到 cli 脚本;请确保将框架添加到您的项目中。" exit 1 fi cd "${srcroot}/${target name}" "${apollo script path}"/check and run apollo cli sh codegen target=swift includes= / / graphql localschemafile="schema json" api swift 6 构建并将您的 api 文件添加到目标 构建您的项目,名为 api swift 的文件应在您的目标目录中创建: 将生成的 api swift 文件拖到您的目标中,并确保取消选中“如果需要则复制文件”复选框: 确保您检查了 api 文件需要包含的所有目标。 7 配置客户端 现在在你的 viewcontroller swift 中,创建你的 apollo 配置并更改你的 appid 和 clientkey 值: 1 let apollo apolloclient = { 2 let configuration = urlsessionconfiguration default 3 configuration httpadditionalheaders = \[ 4 "x parse application id" "yourappidhere", 5 "x parse client key" "yourclientkeyhere" 6 ] 7 8 let url = url(string "https //parseapi back4app com/graphql")! 9 10 return apolloclient( 11 networktransport httpnetworktransport( 12 url url, 13 configuration configuration 14 ) 15 ) 16 }() 8 配置客户端 在你的 viewdidload 中,从 apollo 客户端调用你的 graphql 查询: 1 apollo fetch(query findallusersquery()) { result in 2 guard let data = try? result get() data else { return } 3 print(data objects? finduser results\[0] username) 4 } 如果你的用户类中有任何用户,第一个(索引 0)应该被检索到: 可选步骤 获取语法高亮 如果您愿意,可以在 xcode 中获得 graphql 语法高亮。要实现这一点: 将 xcode apollo 仓库 https //github com/apollostack/xcode apollo 克隆到您的计算机上。 如果 xcode 当前正在运行,请关闭它。 您可能需要在 /library/developer/xcode 中创建这些文件夹: mkdir /library/developer/xcode/plug ins /library/developer/xcode/specifications 4\ 将 graphql ideplugin 复制到 /library/developer/xcode/plug ins。 cp r graphql ideplugin /library/developer/xcode/plug ins 5\ 将 graphql xclangspec 复制到 /library/developer/xcode/specifications。 cp r graphql xclangspec /library/developer/xcode/specifications 安装这些附加组件后,您第一次启动 xcode 时可能会收到警告。一旦您同意加载插件,您将不再看到此警告。