Struct를 JSON 형식으로 저장
앱을 닫아도 데이터가 남아 있습니다.
절차
1, Struct를 Codable로 하여 JSON 형식으로 인코딩, 디코딩할 수 있도록 한다.
struct Chocolates: Codable {
var milk: String = " Mild and sweet. "
var bitter: String = " Taste for the adult. "
var white: String = " It's okay once in a while. "
var numberOfMilk:Int = 0
var numberOfBitter:Int = 0
var numberOfWhite:Int = 0
init(numberOfMilk milk:Int,numberOfBitter bitter:Int,numberOfWhite white:Int){
self.numberOfMilk = milk
self.numberOfBitter = bitter
self.numberOfWhite = white
} // 初めて作る時用イニシャライザ
// ここから下がJSON形式にエンコード・デコードできるようにする部分
var json: Data? { // 自身のJSONにエンコードされた形式を返す計算プロパティ
return try? JSONEncoder().encode(self)
}
init?(json: Data) { // 保存されたJSON形式のDataをデコードしてStructを復元するイニシャライザ
if let newValue = try? JSONDecoder().decode(Chocolates.self, from: json) {
self = newValue
} else {
return nil
}
}
}
2, Struct의 JSON 버전 만들기
var chocolates = Chocolates(numberOfMilk: 3, numberOfBitter: 1, numberOfWhite: 2)
let json = chocolates.json
3, File Manager로 쓰기 목적지 URL을 만들고 쓰기
guard let url = try? FileManager.default.url(for: .documentDirectory, in: .userDomainMask, appropriateFor: nil, create: true).appendingPathComponent("chocolates.json") else { return }
do {
try json.write(to: url)
} catch let error {
print(error)
}
4, 읽기
guard let url = try? FileManager.default.url(for: .documentDirectory, in: .userDomainMask, appropriateFor: nil, create: false).appendingPathComponent("chocolates.json") else { return }
do {
let jsonData = try Data(contentsOf: url)
var readChocolates = Chocolates(json: jsonData)
} catch let error {
print(error)
}
🐣
일 상담 여기까지
로쿠키 시코쿠 @ g 마이 l. 이 m
Core ML을 사용하여 앱을 만들고 있습니다.
기계 학습 관련 정보를 발신하고 있습니다.
트위터
Medium
Reference
이 문제에 관하여(Struct를 JSON 형식으로 저장), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/john-rocky/items/9dcf715f24f7e200115b
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
struct Chocolates: Codable {
var milk: String = " Mild and sweet. "
var bitter: String = " Taste for the adult. "
var white: String = " It's okay once in a while. "
var numberOfMilk:Int = 0
var numberOfBitter:Int = 0
var numberOfWhite:Int = 0
init(numberOfMilk milk:Int,numberOfBitter bitter:Int,numberOfWhite white:Int){
self.numberOfMilk = milk
self.numberOfBitter = bitter
self.numberOfWhite = white
} // 初めて作る時用イニシャライザ
// ここから下がJSON形式にエンコード・デコードできるようにする部分
var json: Data? { // 自身のJSONにエンコードされた形式を返す計算プロパティ
return try? JSONEncoder().encode(self)
}
init?(json: Data) { // 保存されたJSON形式のDataをデコードしてStructを復元するイニシャライザ
if let newValue = try? JSONDecoder().decode(Chocolates.self, from: json) {
self = newValue
} else {
return nil
}
}
}
var chocolates = Chocolates(numberOfMilk: 3, numberOfBitter: 1, numberOfWhite: 2)
let json = chocolates.json
guard let url = try? FileManager.default.url(for: .documentDirectory, in: .userDomainMask, appropriateFor: nil, create: true).appendingPathComponent("chocolates.json") else { return }
do {
try json.write(to: url)
} catch let error {
print(error)
}
guard let url = try? FileManager.default.url(for: .documentDirectory, in: .userDomainMask, appropriateFor: nil, create: false).appendingPathComponent("chocolates.json") else { return }
do {
let jsonData = try Data(contentsOf: url)
var readChocolates = Chocolates(json: jsonData)
} catch let error {
print(error)
}
Reference
이 문제에 관하여(Struct를 JSON 형식으로 저장), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/john-rocky/items/9dcf715f24f7e200115b텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)