質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
ビルド

ソースコードを単体で実行可能なソフトウェアへ変換する過程をビルド(build)と呼びます

Xcode

Xcodeはソフトウェア開発のための、Appleの統合開発環境です。Mac OSXに付随するかたちで配布されています。

Swift

Swiftは、アップルのiOSおよびOS Xのためのプログラミング言語で、Objective-CやObjective-C++と共存することが意図されています

Q&A

解決済

1回答

984閲覧

xcodeでファイルをビルドしようとするとapp may have crashedと表示される

aokiti

総合スコア1

ビルド

ソースコードを単体で実行可能なソフトウェアへ変換する過程をビルド(build)と呼びます

Xcode

Xcodeはソフトウェア開発のための、Appleの統合開発環境です。Mac OSXに付随するかたちで配布されています。

Swift

Swiftは、アップルのiOSおよびOS Xのためのプログラミング言語で、Objective-CやObjective-C++と共存することが意図されています

0グッド

0クリップ

投稿2020/07/01 08:34

xcodeでアプリを作っている際、jsonファイルの読み込み込みができず下記のようなエラーが出ます。
イメージ説明

jsonファイルの内容の紐付けができません。

色々調べてみましたが、解決方法が見つからず困っています。解決方法を教えていただければ幸いです。

以下にjsonファイル、jsonファイルに対する構造体を定義したswiftファイル、jsonを読み込んだswiftファイル、ビルドしたいswiftファイルを挿入します。

(1) jsonファイル

json

1[ 2 { 3 "id":"1", 4 "type": "日常", 5 "imageName": "situation1", 6 "quiz":[ 7 { 8 "id":"001", 9 "title":"ljlajg", 10 "explain": "awggj", 11 "OKans": "nglegnkgkgb", 12 "BADans": "kngln", 13 "favorite": false 14 } 15 ] 16 }, 17 { 18 "id":"2", 19 "type": "学校", 20 "imageName": "situation2", 21 "quiz":[ 22 { 23 "id":"001", 24 "title":"ljlajg", 25 "explain": "awggj", 26 "OKans": "nglegn", 27 "BADans": "kngln", 28 "favorite": false 29 } 30 ] 31 }, 32 { 33 "id":"3", 34 "type": "旅行", 35 "imageName": "situation1", 36 "quiz":[ 37 { 38 "id":"001", 39 "title":"ljlajg", 40 "explain": "awggj", 41 "OKans": "nglegn", 42 "BADans": "kngln", 43 "favorite": false 44 } 45 ] 46 } 47]

(2) jsonファイルに対する構造体を定義したswiftファイル

swift

1import SwiftUI 2 3struct Situation : Codable,Identifiable { 4 public var id: String 5 public var type: String 6 public var imageName: String 7 public var image: Image { Image(imageName) } 8 public var quiz: Quiz 9} 10 11struct Quiz : Codable,Identifiable { 12 public var id: String 13 public var title: String 14 public var explain: String 15 public var OKans: String 16 public var BADans: String 17 public var favorite: Bool 18}

(3) jsonを読み込んだswiftファイル

swift

1import Foundation 2 3struct QuizStore { 4 let quizs: [Situation] = load("situation.json") 5} 6 7let quizStore = QuizStore() 8 9func load<T: Decodable>(_ filename: String, as type: T.Type = T.self) -> T { 10 let data: Data 11 12 guard let file = Bundle.main.url(forResource: filename, withExtension: nil) 13 else { 14 fatalError("Couldn't find (filename) in main bundle.") 15 } 16 17 do { 18 data = try Data(contentsOf: file) 19 } catch { 20 fatalError("Couldn't load (filename) from main bundle:\n(error)") 21 } 22 23 do { 24 let decoder = JSONDecoder() 25 decoder.dateDecodingStrategy = .iso8601 26 return try decoder.decode(T.self, from: data) 27 } catch { 28 fatalError("Couldn't parse (filename) as (T.self):\n(error)") 29 } 30}

(3) ビルドしたいswiftファイル

swift

1import SwiftUI 2 3struct ChooseView: View { 4 var items: [Situation] 5 6 var body: some View { 7 NavigationView { 8 VStack { 9 ForEach(self.items) { item in 10 ZStack{ 11 NavigationLink(destination: DetailView()) { 12 item.image 13 .resizable() 14 .frame(width: 155, height: 155) 15 16 } 17 Text(item.type) 18 .font(.largeTitle) 19 } 20 } 21 } 22 .navigationBarTitle("bu") 23 } 24 } 25} 26 27 28struct ChooseView_Previews: PreviewProvider { 29 static var previews: some View { 30 ChooseView(items: quizStore.quizs) 31 } 32} 33

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

quiz は配列なのでは。

diff

1 struct Situation : Codable, Identifiable { 2 public var id: String 3 public var type: String 4 public var imageName: String 5 public var image: Image { Image(imageName) } 6- public var quiz: Quiz 7+ public var quiz: [Quiz] 8 }

投稿2020/07/02 11:21

hoshi-takanori

総合スコア7895

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

aokiti

2020/07/03 04:51

解決できました。ありがとうございます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問