早期私はこれと同じ問題だった昨年 - ここに私の回避策です(と私は、これは周りの作品であることを強調しなければならない、うまくいけば、今それを行うための別の方法があります)
- でスウィフトのファイルを作成します。あなたがデータにアクセスするために使用することができ、あなたのプロジェクト(私は
Recipe.swift
た)
- は、(ターゲット・メンバーシップを無視して - ちょうど便宜のために(私が
Recipe.json
た))のXcodeにあなたのCSVをドロップ
データをロードするために実行スクリプトのフェーズを作成します。あなたの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"
これは次のようになりますあなたのスウィフトのファイルにクラスを生成します。
import Foundation
class Recipe {
static let data = "..."
}
をそして、あなたはそれを使用する必要がある場合、あなたはRecipe.data
をデコードすることができます。
もちろん、これは非常に拡張可能な解決策ではありません。遅延初期化を使用して、生成されたクラスに直接base64デコードを追加し、スクリプトのパスを$SRCROOT
などに相対的に変更することで、これは私がプロジェクトの残りの部分で作業を続けることを可能にしたちょっとした速い解決策でした。
テキストファイルがバンドルに追加されているかどうかを確認します。ビルドフェーズ>バンドルリソースのコピーオプション – Joe
@Joe OPが言った** "バンドルリソースのコピー"ビルドフェーズでテキストファイルを追加しようとしました** –
https://stackoverflow.com/questions/43826866/read-a-file-in-a-macos-command-line-tool-project –