🌟
[Swift]Documents内のJSONファイルの読み書き
はじめに
SwiftでDocuments/ディレクトリ内のJSONファイルの読み込み・書き込みについて説明していきます。
環境
- Xcode 12.5
- Swift 5.4
[前準備]JSONデータを格納する構造体を定義
struct Bookdata: Codable {
var id: Int //本のID
var title: String //本のタイトル
var author: String //本の著者
var publisher: String //本の出版社
var comment: String //本のコメント
}
JSONファイルの読み込み
guard let dirURL = FileManager.default.urls(for: .documentDirectory, in: .userDomainMask).first else {
fatalError("フォルダURL取得エラー")
}
if !FileManager.default.fileExists(atPath: NSHomeDirectory() + "/Documents/" + "bookdata.json"){
fatalError("JSONが存在しない")
}
let fileURL = dirURL.appendingPathComponent("bookdata.json")
guard let data = try? Data(contentsOf: fileURL) else {
fatalError("JSON読み込みエラー")
}
let decoder = JSONDecoder()
guard let bookdata = try? decoder.decode([Bookdata].self, from: data) else {
fatalError("JSONデコードエラー")
}
//bookdata[0].titleなどでとり出すことが可能
JSONファイルの書き込み
guard let dirURL = FileManager.default.urls(for: .documentDirectory, in: .userDomainMask).first else {
fatalError("フォルダURL取得エラー")
}
let fileURL = dirURL.appendingPathComponent("bookdata.json")
let encoder = JSONEncoder()
encoder.outputFormatting = .prettyPrinted //JSONデータを整形する
guard let jsonValue = try? encoder.encode(bookdata) else {
fatalError("JSONエンコードエラー")
}
do {
try jsonValue.write(to: fileURL)
} catch {
fatalError("JSON書き込みエラー")
}
Discussion