Swift 5
Wenn Sie struct in UserDefault nur mit Daten speichern möchten speichern .
Smaple struct
struct StudentData:Codable{
var id: Int?
var name: String?
var createdDate: String?
init(from decoder: Decoder) throws {
let values = try? decoder.container(keyedBy: codingKeys.self)
id = try? values?.decodeIfPresent(Int.self, forKey: .id)
name = try? values?.decodeIfPresent(String.self, forKey: .name)
createdDate = try? values?.decodeIfPresent(String.self, forKey: .createdDate)
}
func encode(to encoder: Encoder) throws {
var values = encoder.container(keyedBy: codingKeys.self)
try? values.encodeIfPresent(id, forKey: .id)
try? values.encodeIfPresent(name, forKey: .name)
try? values.encodeIfPresent(createdDate, forKey: .createdDate)
}
}
Es gibt zwei Typen, die als Daten konvertiert werden können
- Codierbar (codierbar und decodierbar).
- PropertyListEncoder und PropertyListDecoder
Zuerst verwenden wir das Codable (Encodable and Decodable) , um die Struktur zu speichern
Beispiel für Wert speichern
let value = StudentData(id: 1, name: "Abishek", createdDate: "2020-02-11T11:23:02.3332Z")
guard let data = try? JSONEncoder().encode(value) else {
fatalError("unable encode as data")
}
UserDefaults.standard.set(data, forKey: "Top_student_record")
Wert abrufen
guard let data = UserDefaults.standard.data(forKey: "Top_student_record") else {
return
}
guard let value = try? JSONDecoder().decode(StudentData.self, from: data) else {
fatalError("unable to decode this data")
}
print(value)
Jetzt verwenden wir den PropertyListEncoder und den PropertyListDecoder , um die Struktur zu speichern
Beispiel für Wert speichern
let value = StudentData(id: 1, name: "Abishek", createdDate: "2020-02-11T11:23:02.3332Z")
guard let data = try? PropertyListEncoder().encode(value) else {
fatalError("unable encode as data")
}
UserDefaults.standard.set(data, forKey: "Top_student_record")
Wert abrufen
guard let data = UserDefaults.standard.data(forKey: "Top_student_record") else {
return
}
guard let value = try? PropertyListDecoder().decode(StudentData.self, from: data) else {
fatalError("unable to decode this data")
}
print(value)
Sie können den beliebigen Typ verwenden, um die Struktur in userDefault zu speichern.