使用 Swift Package Manager、Cocoa Pods 或其他方式将最小的 GRDB 添加到 Xcode



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

GRDB安装说明建议提供一种选择:"Swift Package Manager"。 由于我是这个编程环境的新手,这听起来像是"正确的方式",但在尝试之后,我仍然在猜测如何成功构建我的项目。

到目前为止完成的步骤:

  • 创建了一个新项目Applications > Xcode (9.4 beta) > Create a new Xcode project > Single View App > "FirstDb"
  • import GRDB放入视图控制器中(显然还无法编译)
  • >公用事业>终端的应用
    • cd /Users/owner/documents/xcodeprojects/firstdb
    • mkdir GRDB
    • cd GRDB
    • swift package init --type library
  • 编辑Package.swift,在适当的位置添加.package(url: "https://github.com/groue/GRDB.swift.git", from: "2.10.0")
  • >公用事业>终端的应用
    • swift package resolve(导致"获取"、"克隆"、"解析")

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

因此,问题的第 1 部分仍未解决。 我还没有能够回答问题的第 2 部分。 抱歉,如果其中一个或两个对于富有的 Xcode 开发人员来说非常明显,但是在研究了这个问题之后,我没有发现具体的指导。

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

脚注

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

可可豆荚

正如作者所指出的,Swift Package Manager 只是一种选择,并且"不知道与现有的 Xcode 项目集成",所以可能不是一个好的选择。 因此,为了解决问题的第一部分,下面显示了使用Cocoa Pods集成GRDB的技术。

可豆荚安装

根据本教程,如果您的操作系统是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!(我们稍后将通过 XC工作区访问它,而不是 XcodeProj)
  • 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 在增强时没有引入的重大更改。

使用可可豆荚获取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 导入构建项目

现在打开工作区文件FirstDb.xcworkspace(而不是proj文件)。 在左侧的项目大纲中,您应该看到您的入门项目,还Pods

FirstDb
Pods

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

完整的 GRDB 安装说明不建议使用 Swift Package Manager。他们说你可以使用SPM。

SPM不知道与现有的Xcode项目集成。相反,SPM 可以生成Xcode 项目:如果您确实需要SPM,请获取有关此内容的信息。例如,请参阅 https://www.raywenderlich.com/148832/introduction-swift-package-manager

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

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

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

最新更新