SwiftUI 3-3-2. JSONファイルを読み込む
前節で, ストレージにJSONファイルを書き込みました. 今回はファイルが正しく書き込みされているか確認する意味も込めてストレージのファイルの読み込み処理を追加します. 前回のコードに続けて書く PhotoDataの中に load( path: )関数 を作成する ファイルが存在するかを FileManager.default.fileExists( atPath: ) で確認 ファイルがない場合は空の配列を返すようにする URL( fileURLWithPath:path ) で読込パスをURLに変換する try! Data( contentOf:url ) でファイルを読み込む 3-02で作成済みの PhotoData.parse( json: ) で[PhotoData]に変換して返す コード1 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 import Foundation struct PhotoData : Identifiable, Codable, Equatable { var id:String = UUID().uuidString var type:String var imageName:String var title:String var message:String static func parse( json:Data ) -> [PhotoData] { do { let photos = try JSONDecoder().decode( [PhotoData].self, from:json ) return photos } catch { print( "JSONをPhotoData配列に変換できませんでした." ) print( error.localizedDescription ) return [] } } static func load( path:String ) -> [PhotoData] { if FileManager.default.fileExists( atPath:path ) == false { return [] } let url = URL( fileURLWithPath: path ) let user_json = try! Data( contentsOf:url ) return PhotoData.parse( json:user_json ) } static func save( path:String, data:[PhotoData] ) { let user_json = try! JSONEncoder().encode( data ) let url = URL( fileURLWithPath:path ) try! user_json.write( to:url, options:[.atomic] ) } } これでストレージに保存したJSONを読み込むことができるようになりました. ContentViewで使ってみます. ...