実現したいこと
Xcodeでプロジェクト内に格納したJsonファイルをデコードしたい
前提
swift/Xcodeを利用しています。
プロジェクト内にJsonファイルを格納しており、デコードする際に「The data couldn’t be read because it is missing.」とエラーメッセージ(print)が出ます。
発生している問題・エラーメッセージ
念の為、関係ないと思われますが前後のメッセージも記載します。
jsonDataだよ 338953 bytes startGame Error: The data couldn’t be read because it is missing. ボタンを押しました
該当のソースコード
下記がデコード先のクラス情報です。
Swift
1struct FS_Epsord: Codable { 2 var id: UUID = UUID() 3 var title: String 4 var dunjeonName: String 5 var dunjeonText: String 6 var image: String 7 var difficulty: Int 8 var num: Int 9 var talks: [EpsordTalk] 10 var cleared: Bool 11 var firstTime: Bool 12 var encountTime: Int 13 var seconds: Int 14 var mobEnemys: [Int] 15 var bossEnemys: [Int] 16} 17 18class EpsordTalk: Identifiable, Codable { 19 var id = UUID() 20 var type: TalkType 21 var image: String 22 var name: String 23 var talk: String 24 var choice: String 25 26 enum CodingKeys: String, CodingKey { 27 case id 28 case type 29 case image 30 case name 31 case talk 32 case choice 33 } 34 35 init(id: UUID = UUID(), type: TalkType, image: String, name: String, talk: String, choice: String) { 36 self.id = id 37 self.type = type 38 self.image = image 39 self.name = name 40 self.talk = talk 41 self.choice = choice 42 } 43} 44 45enum TalkType: Codable { 46 case talk 47 case info 48 case choice 49}
そして下記がデコードする際のコードです。
Swift
1if let path = Bundle.main.path(forResource: "MAINSTROYEPSORDS", ofType: "json") { 2 do { 3 let jsonData = try Data(contentsOf: URL(fileURLWithPath: path), options: .mappedIfSafe) 4 print("jsonDataだよ") 5 print(jsonData) 6 let decoder = JSONDecoder() 7 let epsordData = try decoder.decode([FS_Epsord].self, from: jsonData) 8 FS_STORY_EPSORD_DATA = epsordData 9 // FS_STORY_EPSORD_DATAに配列としてデコードされたJSONデータが格納されます 10 print("エピソードのJsonデータの読み込みに成功しました") 11 12 } catch { 13 print("startGame Error: \(error.localizedDescription)") 14 } 15 }
また、下記がデコード対象のJsonデータです。
json
1[ 2 { 3 "title": "知らない世界", 4 "dunjeonName": "森の道", 5 "dunjeonText": "この世界では魔物と呼ばれる生物が人を襲うことがあるという。", 6 "image": "epsordA", 7 "difficulty": 0, 8 "num": 0, 9 "talks": [ 10 { 11 "type": ".talk", 12 "image": "okina", 13 "name": "翁", 14 "talk": "「なんじゃお主、こんなところで寝ておったのか?」", 15 "choice": "" 16 }, 17 { 18 "type": ".talk", 19 "image": "okina", 20 "name": "翁", 21 "talk": "「……まさか記憶がないのか? はたまた……」", 22 "choice": "" 23 }, 24 { 25 "type": ".talk", 26 "image": "okina", 27 "name": "翁", 28 "talk": "「そのままってわけにはいかんだろう。とりあえず街までいくかの」", 29 "choice": "" 30 }, 31 { 32 "type": ".talk", 33 "image": "okina", 34 "name": "翁", 35 "talk": "「そうじゃな、なんと呼べば良いかの」", 36 "choice": "" 37 }, 38 { 39 "type": ".choice", 40 "image": "player.image", 41 "name": "player.name", 42 "talk": "「player.nameだ」", 43 "choice": "「……player.nameだった気がする」" 44 }, 45 { 46 "type": ".talk", 47 "image": "okina", 48 "name": "翁", 49 "talk": "「そうか、それじゃあplayer.name。よろしくの」", 50 "choice": "" 51 }, 52 { 53 "type": ".talk", 54 "image": "okina", 55 "name": "翁", 56 "talk": "「弱いとはいえ魔物が出る。わしの側から離れるなよ」", 57 "choice": "" 58 } 59 ], 60 "cleared": false, 61 "firstTime": false, 62 "encountTime": 0, 63 "seconds": 1, 64 "mobEnemys": [ 65 0, 66 1 67 ], 68 "bossEnemys": [ 69 1, 70 1 71 ] 72 }, 73 { 以降割愛
試したこと
Key名の確認は何度もしましたし、Jsonファイルの破損もチェックサイトで確認しましたがありませんでした。
その他、Xcode上でビルドターゲットになっているかも確認しています。
もうGPTとも何度も確認しましたが分からず、何をやってもデコードができなかったので、なんとかお力添え頂きたく投稿いたしました。
よろしくお願いいたします。
補足情報(FW/ツールのバージョンなど)
Xcode
Version 14.2 (14C18)
回答1件
あなたの回答
tips
プレビュー