如何在Package.swift文件中向RealmSwift添加依赖项?

问题描述

我一直在为此苦苦挣扎,而且已经很接近了。 我想构建一个包含导入RealmSwift的代码的swift包。 Xcode能够解析文件并下载软件包的代码。但是我得到“对于包含它的每个文件,没有这样的模块'RealmSwift'。这是我的Package.swift文件。有人看到它有问题吗?

// swift-tools-version:5.3
// The swift-tools-version declares the minimum version of Swift required to build this package.

import PackageDescription

let package = Package(
    name: "TCA",platforms: [
        .iOS(.v14)
    ],products: [
        // Products define the executables and libraries a package produces,and make them visible to other packages.
        .library(
            name: "TCA",targets: ["TCA"]),],dependencies: [
        .package(name: "Realm",url: "https://github.com/realm/realm-cocoa",.exact("5.3.3")),targets: [
         .target(
            name: "TCA",dependencies: [
                .product(name: "RealmSwift",package: "Realm")
            ]),.testTarget(
            name: "TCATests",dependencies: ["TCA"]),]
)

解决方法

非常感谢@iUrii提供了第二对?!!

正如我所说,我很亲近。正如StackOverflow上经常发生的那样,您会提出一个问题,更重要的是,会回答另一个问题。答案是我的Package.swift是正确的,并且

✅这就是将RealmSwift包含在您自己的程序包中的方式。

  • 我想解释一下我要做些什么才能使它起作用。

这些工具向我提供了不一致,无用的错误消息。 首先要记住的是,您的配置可能没问题,但是软件包中的某些代码无法正确编译。 编译器可能不会标记您的错误。

  • 就我而言,“问题导航器”没有显示任何错误,但是 包没有建立。

在导航器控制台中(两次在Xcode中切换cmd-0,您就会知道我在说什么区域),在最顶部有一排图标。最右边的一个(看起来像页面上的列表)是“ Report Navigator”。轻按该按钮,您会看到一份建造和清理清单。每次尝试重建项目(cmd-b)时,都会在顶部显示一个新条目。始终与最上面的一个一起工作。事物神奇地将自身固定在一个点上,而又在另一点断裂。因此,请专注于它现在发现的问题。

shift-cmd-K清除您的构建文件夹。点击出现的标题。您是否看到“清理成功”消息,并带有一个✅图标?除非达到目标,否则您最好不要这样做。完成后返回此清单。

到此为止,您应该确信配置文件正确无误。这实际上是一件大事,应该增强您的信心继续前进。

这时,妨碍您完成构建的内容应显示在构建报告中。继续并键入cmd-b,等待其完成,然后在左侧的“报告导航器”中点击列表的顶部条目(最新的构建报告)。 希望在屏幕的右侧看到“准备构建”,一个圆形的✅工作区,然后在报告顶部显示您的工作区名称。

下面是称为“构建目标”的部分。该报告列出了它已编译或尝试编译的每个文件。从顶部开始,然后跳过✅文件,使用!打开您看到的第一个文件。在一个灰色的圆圈内。这是编译器遇到问题的文件。 那些红色的?和?(中心带有白色圆圈)需要固定。它们可能定义得很完美,但是定义在文件或类,结构或方法中,而这些文件或类或结构或方法并未进行干净地编译,因此编译器无法识别它们。 (也许有一个导入声明无效或不再有效/需要)从顶部开始并逐一解决。如果您在解决问题时所在的文件还有其他错误,请也将其修复。无论如何,它们可能都正好位于报告中此错误的下方……一旦编辑器对文件满意,请保存并构建。 (cmd-b) 此时,您应该减少一个错误的文件,并且错误计数已减少。在此过程中,如果添加丢失的文件,您可能会发现计数增加而不是减少。不要灰心,只要继续从列表中的最上面的错误开始,直到没有其他错误为止。

很高兴地报告,在执行了此过程之后,我现在能够使用多个导入的框架来干净地构建该软件包。 (目前有66个文件,并且还在不断增加)