gpt4 book ai didi

swift - Bundle.main.path 找不到添加到项目中的文本文件

转载 作者:搜寻专家 更新时间:2023-11-01 05:33:46 26 4
gpt4 key购买 nike

我在 Xcode 9 中有一个命令行项目,我正在尝试读取通过“将文件添加到...”添加到项目中的文本文件。我正在使用以下行来获取文件的路径:

guard let filePath = Bundle.main.path(forResource: "stops", ofType: "csv") else {
fatalError("Cannot find CSV file")
}

当我运行它时,它会打印出 fatalError 消息。我尝试在“复制捆绑资源”构建阶段添加文本文件。它仍然找不到该文件。

我做错了什么?

最佳答案

去年年初我遇到了同样的问题 - 这是我的解决方法(我必须强调这是一种解决方法,希望现在有另一种方法可以解决)

  1. 在您的项目中创建一个可用于访问数据的 Swift 文件(我的是 Recipe.swift)
  2. 将您的 CSV 放入 xcode(忽略目标成员资格 - 只是为了方便(我的是 Recipe.json))
  3. 创建一个运行脚本阶段以将数据从 CSV 加载到 Swift 类中:

    set -e
    DATA=$(cat "./MyProject/recipe.json" | base64)
    echo "import Foundation" > "./MyProject/Recipe.swift"
    echo "class Recipe {" >> "./MyProject/Recipe.swift"
    echo " static let data = \"$DATA\"" >> "./MyProject/Recipe.swift"
    echo "}" >> "./MyProject/Recipe.swift"

这会在您的 Swift 文件中生成一个类似于以下内容的类:

import Foundation
class Recipe {
static let data = "..."
}

然后当你需要使用它时,你可以解码Recipe.data

当然,这不是一个可扩展性很强的解决方案,我相信您可以通过使用惰性初始化、直接在生成的类中添加 base64 解码、在脚本中创建相对于 $ 的路径来使其变得更好SRCROOT 等。这只是我的快速解决方案,让我可以继续处理项目的其余部分。

关于swift - Bundle.main.path 找不到添加到项目中的文本文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47005757/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com