使用 Swift 包管理器、Cocoa Pods 或其他工具将最小 GRDB 添加到 Xcode 项目

Adding minimal GRDB to an Xcode project using Swift Package Manager, Cocoa Pods, or other

来自 GRDB on github 的演示 iOS 应用程序在我的 iMac 的 phone 模拟器上运行良好,但不清楚如何在 iOS 应用程序中构建 GRDB我自己的(这个问题的第 1 部分),使用最少的组件(这个问题的第 2 部分)。1

GRDB installation instructions建议提供一个选项:"Swift Package Manager"。由于我是这个编程环境的新手,这听起来像 "the right way",但在尝试之后,我仍然在猜测如何成功构建我的项目。

目前完成的步骤:

状态Product > Build 之后,import GRDB 行仍然显示 no such module.

因此问题的第 1 部分仍未解决。我还没有能够解决问题的第 2 部分。很抱歉,如果这些中的一个或两个对于富有的 Xcode 开发人员来说是显而易见的,但是在研究了这个问题之后,我没有找到具体的指导。

使用 SPM 不是必需的,因此如果集成 GRDB 的其他选项是更好的选择,我想看看如何使用其中之一进行集成。

脚注

  1. 我想了解仅添加使用 Record 对象所需的 GRDB 部分并能够执行 SQL 语句所需的步骤iOS 项目。假设在使用 GRDB 基础知识的项目中不需要完整包的大部分(测试、观察等),从而产生更紧凑的 iOS 应用程序。

complete GRDB installation instructions建议使用Swift包管理器。他们说您可以使用 SPM。

SPM 无法与现有 Xcode 项目集成。相反,SPM 可以生成 Xcode 项目:如果您真的需要 SPM,请获取有关此的信息。例如,参见 https://www.raywenderlich.com/148832/introduction-swift-package-manager

不过还有其他选择:GRDB安装说明上说也可以使用CocoaPods,手动安装。迦太基是另一种可能性(但不完全推荐)。因此,我建议您切换到 CocoaPods,这是将 GRDB 和其他库集成到您的 Xcode 项目中的最简单方法。

I would like to understand the steps required to add only the portions of GRDB that are required to use the Record object and to be able to execute SQL statements for an iOS project. The presumption is that much of the complete package (tests, watch, etc, is not required in the project using the GRDB basics, resulting in a more compact iOS application.

Apple Watch 的测试和支持不会使您的应用程序膨胀:GRDB 只向应用程序公开它们需要的内容。例如,测试是 GRDB 存储库的一部分(因为没有测试就无法发布一个健壮的库),但它们不是库本身的一部分。现在 GRDB 是一个 整体 库,而不是几个库的伞:你不能拆分 GRDB 并只选择你想要的部分。例如,记录类型和 SQL 支持始终可用。但是,有独立的配套库,例如 RxGRDB,您可以选择使用或不使用。

CocoaPods

正如作者所指出的,Swift Package Manager 只是一个选项并且是 "not known to integrate with existing Xcode projects",因此可能不是一个好的选择。因此,为了解决问题的第一部分,下面显示了使用 Cocoa Pods 集成 GRDB 的技术。

Cocoa Pods 安装

基于 this tutorial,如果您的 OS 是 OS X 10.7 或更高版本,您应该能够安装 CocoaPods 而无需先下载任何东西.

  • Applications > Utilities > Terminal
    • sudo gem install cocoapods
    • pod setup --verbose

我的安装似乎工作正常,但生成的日志记录比教程显示的多。

与现有项目集成

  • 创建了一个新项目Applications > Xcode (9.4 beta) > Create a new Xcode project > Single View App > "FirstDb"
  • 这创造了/Users/owner/documents/xcodeprojects/FirstDb/FirstDb.xcodeproj
  • import GRDB放入视图控制器(显然还不能编译)
  • 关闭Xcode!(稍后我们将访问它,通过xcworkspace,而不是xcode 项目)
  • Applications > Utilities > Terminal
    • cd /Users/owner/documents/xcodeprojects/firstdb
    • pod init
    • open -a Xcode PodFile

让你的文件指定 GRDB:

platform :ios, '9.0'
target 'FirstDb' do
    use_frameworks!
    pod 'GRDB.swift'
end

这没有利用可用的版本控制功能,因此您需要确保 GRDB 在增强时没有引入重大更改。

使用CocoaPods得到GRDB

现在是下载GRDB的时间:

  • Applications > Utilities > Terminal
    • cd /Users/owner/documents/xcodeprojects/firstdb
    • pod install

你应该看到这样的东西:

Analyzing dependencies
Downloading dependencies
Installing GRDB.swift (2.10.0)
Generating Pods project
Integrating client project
[!] Please close any current Xcode sessions and use `FirstDb.xcworkspace` for this project from now on.
....

使用 GRDB 导入构建项目

现在打开 workspace 文件 FirstDb.xcworkspace(不是 proj 文件)。在左侧的项目大纲中,您应该会看到您的起始项目以及 Pods:

FirstDb
Pods

构建工作区 (Product > Build),您应该会看到 ViewController 中的 import GRDB 行编译没有错误。