按照以下步骤添加Apollo iOS 到您的应用程序中:
您可以使用 Swift 包管理器或 CocoaPods 将 Apollo iOS 添加到项目中。
如果您的项目使用其自身的Package.swift
文件,您可以在其中添加 Apollo iOS 作为依赖项。
Package.swift
3
url: "https://github.com/apollographql/apollo-ios.git",
4
.upToNextMajor(from: "1.0.0")
任何将使用 ApolloClient
的应用程序目标都需要对 Apollo
产品具有依赖关系。
Package.swift
4
.product(name: "Apollo", package: "apollo-ios"),
注意:只使用 Apollo 生成的模型的地址不需要链接到 Apollo
产品。
如果您在 Xcode 项目或工作空间中使用 Swift 包管理器,请使用 Xcode 项目配置 UI 添加 Apollo iOS 包。
在弹出的对话框中,将 Apollo iOS GitHub 仓库的 URL(https://github.com/apollographql/apollo-ios.git
)粘贴到搜索栏中,然后选择出现的 apollo-ios
包:
注意: Xcode 可能不会自动选择最新版本号,请注意检查。
选择您想使用的包。如果您是初次使用,我们建议先只选择主要的 Apollo
库。如果您需要,您可以稍后随时添加其他包。
注意:
- 除非您的项目配置为使用 Apollo iOS 框架的动态链接,否则请不要选择
Apollo-Dynamic
产品。大多数项目不需要链接到这个产品。 - 请不要选择
apollo-ios-cli
包。 如果您将其作为依赖项链接到项目中,它将 会导致构建错误。。
由于 Apollo iOS 使用 Swift 5,您需要使用 CocoaPods 版本 1.7.0
或更高版本。您可以使用以下命令安装 CocoaPods:
在 Podfile 中添加 pod "Apollo"
。
- 要包含
ApolloSQLite
框架,也添加 pod "Apollo/SQLite"
- 要包含
ApolloWebSocket
框架,也添加 pod "Apollo/WebSocket"
使用 CocoaPods 生成的 .xcworkspace
文件来处理您的项目。
为了让 Apollo iOS 为您的 GraphQL 操作生成模型,您需要本地复制的您的 GraphQL 服务器 的模式。
Apollo iOS可以从您的目标文件的GraphQL查询和突变生成代码。为了使用Apollo iOS,您至少需要定义一个操作 GraphQL操作。
GraphQL操作和片段定义传统上使用.graphql文件扩展名。生成的模型将具有.graphql.swift文件扩展名。
Apollo iOS代码生成使用您的.graphql文件来生成API代码,帮助执行GraphQL操作,并解析和缓存操作响应。
每当您修改您的GraphQL操作定义时,您都需要运行代码生成器以重新生成您的GraphQL模型。
最简单的方法是使用Apollo iOS提供的Codegen CLI。
Apollo iOS SPM包将Codegen CLI作为可执行目标包含。这确保您始终有适用于Apollo iOS版本的有效CLI版本。
为了简化访问Codegen CLI,您可以运行包含的apollo-cli-install
SPM插件。此插件构建CLI并在项目根目录中创建到可执行文件的符号链接。
如果您使用的是Package.swift
文件,可以通过运行以下命令来安装CLI:
1
swift package --allow-writing-to-package-directory apollo-cli-install
插件安装后,将在项目的根目录中创建一个指向 Codegen CLI 的符号链接(命名为apollo-ios-cli
)。现在您可以使用./apollo-ios-cli
在命令行中运行 CLI。
注意:因为您项目根目录下的apollo-ios-cli
只是一个符号链接,所以只有在编译后的 CLI 可执行文件存在时才能工作。这通常位于您的 Xcode Derived Data 或.build
文件夹中。如果这些被清除,您可以重新运行安装 CLI 插件来重建 CLI 可执行文件。
Codegen CLI 使用 JSON 文件配置代码生成引擎。您可以使用 Codegen CLI 的init
命令来创建具有默认值的此文件。
从您的项目根目录运行以下命令,并用您的自定义值替换
1
./apollo-ios-cli init --schema-namespace ${MySchemaName} --module-type ${ModuleType}
${MySchemaName}
为生成的_schema_文件提供命名空间名称。${ModuleType}
配置生成的 schema 类型如何包含在您的项目中。这是在配置代码生成之前需要做出的一个关键决策。为了确定适合您项目的正确选项,请参阅项目配置
为了快速入门,您可以使用embeddedInTarget
选项。使用embeddedInTarget
,您必须使用--target-name
命令行选项提供目标名称。
运行此命令将创建一个apollo-codegen-config.json
文件。
打开您的apollo-codegen-config.json
文件以开始为项目配置代码生成。
- 在您的项目目录中查找所有以文件扩展名GraphQL schema结尾的GraphQL schema文件。
- 在您的项目目录中查找所有以文件扩展名GraphQL操作和片段定义文件结束的GraphQL操作和片段定义文件。
- 使用
schema-name
提供的方案类型,在目录中生成Swift代码。 - 在方案类型输出位置子文件夹内生成操作和片段模型的Swift代码。
1
./apollo-ios-cli generate
代码生成引擎会创建扩展名为.graphql.swift
的文件。
默认情况下,包含您的生成方案文件的目录位于您提供的方案名称目录中(例如:MySchemaName
)。您的生成操作和片段文件位于同一目录内的子目录中。
如果您在Xcode项目或工作区中创建了目标,您需要手动将生成的文件添加到您的目标中。
注意:由于每次生成新文件都必须手动将生成的文件添加到Xcode目标中,我们强烈建议您使用SPM定义项目目标。或者,您可以将操作生成到包含方案文件的包中。有关更多信息,请参阅代码生成配置文档。
Apollo iOS SPM包将Codegen CLI作为可执行目标包含。这确保您始终有适用于Apollo iOS版本的有效CLI版本。
要简化访问Codegen CLI,您可以运行包含的InstallCLI
SPM插件。
此插件构建CLI,并在您的项目根目录中创建指向可执行文件的符号链接。
如果您通过Xcode使用Swift包,您可以在Xcode文件资源管理器中右键单击您的项目,显示安装CLI插件命令。选择此命令将显示一个对话框,允许您授予插件对您的项目目录的“写入”访问权限。
插件安装后,它将在您的项目根文件夹中创建指向Codegen CLI(命名apollo-ios-cli
)的符号链接。您现在可以从命令行使用./apollo-ios-cli
运行CLI。
注意:因为您项目根目录下的apollo-ios-cli
只是一个符号链接,所以只有在编译后的 CLI 可执行文件存在时才能工作。这通常位于您的 Xcode Derived Data 或.build
文件夹中。如果这些被清除,您可以重新运行安装 CLI 插件来重建 CLI 可执行文件。
Codegen CLI 使用 JSON 文件配置代码生成引擎。您可以使用 Codegen CLI 的init
命令来创建具有默认值的此文件。
从您的项目根目录运行以下命令,并用您的自定义值替换
1
./apollo-ios-cli init --schema-namespace ${MySchemaName} --module-type ${ModuleType}
${MySchemaName}
为生成的_schema_文件提供命名空间名称。${ModuleType}
配置生成的 schema 类型如何包含在您的项目中。这是在配置代码生成之前需要做出的一个关键决策。为了确定适合您项目的正确选项,请参阅项目配置
为了快速入门,您可以使用embeddedInTarget
选项。使用embeddedInTarget
,您必须使用--target-name
命令行选项提供目标名称。
运行此命令将创建一个apollo-codegen-config.json
文件。
打开您的apollo-codegen-config.json
文件以开始为项目配置代码生成。
- 在项目目录中查找所有以文件扩展名
.graphqls
结尾的GraphQL方案文件。 - 在您的项目目录中查找所有以文件扩展名GraphQL操作和片段定义文件结束的GraphQL操作和片段定义文件。
- 使用
schema-name
提供的方案类型,在目录中生成Swift代码。 - 在方案类型输出位置子文件夹内生成操作和片段模型的Swift代码。
1
./apollo-ios-cli generate
代码生成引擎会创建扩展名为.graphql.swift
的文件。
默认情况下,包含您的生成方案文件的目录位于您提供的方案名称目录中(例如:MySchemaName
)。您的生成操作和片段文件位于同一目录内的子目录中。
如果您在Xcode项目或工作区中创建了目标,您需要手动将生成的文件添加到您的目标中。
注意:由于每次生成新文件都必须手动将生成的文件添加到Xcode目标中,我们强烈建议您使用SPM定义项目目标。或者,您可以将操作生成到包含方案文件的包中。有关更多信息,请参阅代码生成配置文档。
如果您使用Cocoapods,Apollo iOS将在pod install
过程中将Codegen CLI编译成可执行shell应用程序(位于Pods/Apollo/apollo-ios-cli
)。
安装Apollo iOS pod后,您可以从您的Podfile
目录中运行Codegen CLI:
1
./Pods/Apollo/apollo-ios-cli ${Command Name} -${Command Arguments}
注意:如果您在Podfile中使用:path
链接到本地Apollo iOS副本,CLI将不会自动可用。您需要手动构建Codegen CLI。有关如何操作的说明,请参阅CLI安装指南。
Codegen CLI 使用 JSON 文件配置代码生成引擎。您可以使用 Codegen CLI 的init
命令来创建具有默认值的此文件。
从您的项目根目录运行以下命令,并用您的自定义值替换
1
./Pods/Apollo/apollo-ios-cli init --schema-namespace ${MySchemaName} --module-type ${ModuleType}
${MySchemaName}
为生成的_schema_文件提供命名空间名称。${ModuleType}
配置生成的 schema 类型如何包含在您的项目中。这是在配置代码生成之前需要做出的一个关键决策。为了确定适合您项目的正确选项,请参阅项目配置
为了快速入门,您可以使用embeddedInTarget
选项。使用embeddedInTarget
,您必须使用--target-name
命令行选项提供目标名称。
运行此命令将创建一个apollo-codegen-config.json
文件。
打开您的apollo-codegen-config.json
文件以开始为项目配置代码生成。
- 在项目目录中查找所有以文件扩展名
.graphqls
结尾的GraphQL方案文件。 - 在您的项目目录中查找所有以文件扩展名GraphQL操作和片段定义文件结束的GraphQL操作和片段定义文件。
- 使用
schema-name
提供的方案类型,在目录中生成Swift代码。 - 在方案类型输出位置子文件夹内生成操作和片段模型的Swift代码。
1
./Pods/Apollo/apollo-ios-cli generate
代码生成引擎会创建扩展名为.graphql.swift
的文件。
默认情况下,包含您的生成方案文件的目录位于您提供的方案名称目录中(例如:MySchemaName
)。您的生成操作和片段文件位于同一目录内的子目录中。
如果您在Xcode项目或工作区中创建了目标,您需要手动将生成的文件添加到您的目标中。
注意:由于每次生成新文件都必须手动将生成的文件添加到Xcode目标中,我们强烈建议您使用SPM定义项目目标。或者,您可以将操作生成到包含方案文件的包中。有关更多信息,请参阅代码生成配置文档。
在您可以在您的应用程序中执行GraphQL操作之前,您需要初始化一个ApolloClient
实例。
4
let apolloClient = ApolloClient(url: URL(string: "https://127.0.0.1:4000/graphql")!)
ApolloClient
可以获取您的操作定义,并以类型安全的数据模型返回响应。
例如,如果您定义了一个名为 查询 的名为 HeroName
:
Apollo iOS 将生成一个 HeroNameQuery
类,您可以构造并将其传递给 ApolloClient.fetch(query:=)
:
1
apolloClient.fetch(query: HeroNameQuery()) { result in
2
guard let data = try? result.get().data else { return }