2016-12-26 11 views
1

私は次のプロジェクトのレイアウト(契約)を持っている:Heroku:ファイルを読む方法は?

project_root 
└── Sources 
   └── App 
     ├── main.swift 
    └── Models 
       └── SQL 
          └── createTables.sql 

私は、実行時にcreateTables.sqlファイルを読み込むしようとしているが、FileManager.fileExists()だが、それが存在していないと言います。私はmain.swift#fileを使用してパスを得た:

let path = URL(fileURLWithPath: #file).deletingLastPathComponent().path + "/Models/SQL/createTables.sql" 

をパスをプリントアウト、正しいと思われます。 私は、Herokuのephemeral filesystemのためにソースツリーがアクセス不能であると推測しています。どのように私はこれを回避し、実行時にファイルを読むことができますか?

答えて

2

drop.workdirを使用して、コンパイル時にプロジェクトディレクトリを取得します。

try String(contentsOfFile: drop.workDir + "Resources/SQL/createTables.sql") 

注意私はまたSourcesから出てResourcesにあなたのファイルを移動しました。蒸気のプロジェクトのレイアウトは石で設定されていませんが、現在のルールはSwiftファイル用で、後者は補助ファイル用であるように見えます。

関連する問題