Swift 代码挑战的初学者项目设置

Beginner Project Setup for Swift Code Challenges

我是 Xcode 和 Swift 的新手。我正在通过挑战 Advent of Code 来学习。我正在努力设置 Xcode 以允许我创建简单的 类 来访问项目中的文本文件。我知道我可以使用 Playgrounds,但我想学习调试器作为其中的一部分,而 Playgrounds 似乎不允许使用真正的调试器。

我的两个问题:

  1. 我应该使用什么样的项目模板?我不想在 iPhone 模拟器上 运行,也不想将其呈现为 Mac 应用程序。我只想执行一些代码并查看“打印”语句的结果。

  2. 访问存储在项目中的文本文件是否有任何特殊注意事项?我已经试过了,但我的代码无法访问这些文件,因为它找不到它们。我怀疑这是一个权限问题,但我不确定。

我在 2021 年 AoC 总排行榜上排名第 92 位。我做了 Swift 中的所有问题。我建议设置一个 Swift 包管理器包。

mkdir ~/aoc2021
cd ~/aoc2021
swift package init --type executable --name day01

现在您有一个包,其中包含一个名为 day01 的可执行目标。您可以在 ~/aoc2021/Sources/day01/main.swift 中找到源代码。如果你要求 Xcode 打开文件夹 ~/aoc2021,它将把 Swift 包解析为一个项目。

不必担心从文件中读取输入,只需将 https://adventofcode.com/2021/day/1/input 中的输入复制到字符串文字中即可。示例:

let theInput = """
187
195
199
218
221
222
219
225
226
227
...
"""

当您准备好进入第 2 天时,您需要手动创建文件夹 ~/aoc2021/Sources/day02 并在该文件夹中创建一个新的 main.swift。然后编辑 ~/aoc2021/Package.swift 并添加另一个可执行目标:

let package = Package(
    name: "day01",
    dependencies: [
        // Dependencies declare other packages that this package depends on.
        // .package(url: /* package url */, from: "1.0.0"),
    ],
    targets: [
        // Targets are the basic building blocks of a package. A target can define a module or a test suite.
        // Targets can depend on other targets in this package, and on products in packages this package depends on.
        .executableTarget(
            name: "day01",
            dependencies: []),

// ADD THE FOLLOWING THREE LINES
        .executableTarget(
            name: "day02",
            dependencies: []),

        .testTarget(
            name: "day01Tests",
            dependencies: ["day01"]),
    ]
)

不要忘记将您的 Xcode 方案(在状态栏中)更改为 day02,这样它将 运行 新的一天的代码。