2017-09-15 16 views
1

私はこのような簡単な作業に悩まされているとは思わない。Xcodeにドラッグアンドドロップした後にJSONファイルを読み取れない - Xcode/Swift

私は自分のプロジェクトにドラッグアンドドロップした「recipes.json」というjsonファイルを持っていて、「必要な場合はアイテムをコピー」にチェックを入れました。 しかし、私は何に関係なくそれにアクセスすることはできません。

func parseRecipesJSON(jsonFile: String) -> [RecipeItem] { 
    var recipesArray = [RecipeItem]() 

    do { 
     let jsonFile = Bundle.main.url(forResource: jsonFile, withExtension: "json") 
     print("## ", jsonFile as Any) 
     let data = try Data(contentsOf: jsonFile!) 
     let json = try JSONSerialization.jsonObject(with: data, options: []) 
     // my code 
    } catch { 
     print(error) 
    } 

    return recipesArray 
} 

let data = try行でアプリがクラッシュします。前の行はnilを出力します。 ファイルはXcodeプロジェクトにコピーされていても存在しません。私もシミュレータのファイルでそれを見つけることができませんでした。私はここで間違って何をしていますか?

EDIT:同じコードがPlaygroundで正常に機能しました。 ファイルを共有プレイグラウンド文書フォルダに入れた後、let fileURL = PlaygroundSupport.playgroundSharedDataDirectory.appendingPathComponent(jsonFile)を使用しなければなりませんでした。

答えて

4

2点を確認してください。

  1. jsonFileには実際に正しい名前が含まれていますか? "recipes"である必要があります。
  2. JSONファイルをターゲットに追加しましたか? Build Phasesに行くと、Copy Bundle Resourcesに表示されるはずです。これはリソースファイルなので、ファイルを選択してファイルインスペクタを見ると、[Target Membership]リストに問題のターゲットがチェックマークとして表示されます。そうでない場合は、バンドルリソースのコピーに追加する必要があります。
+1

はい、それは#2でした。 ファイルをドラッグしてXcodeにコピーするとすぐに自動的に完了したと思いました。 ありがとう – Tarek

関連する問題