Junior
İstifadəçi Parametrləri ilə məlumat quruluşlarını necə saxlamaq və oxumaq olar?
sobes.tech Süni İntellekt
AI-dan cavab
İstifadəçi Parametrləri yalnız məhdud sayda tipləri saxlayır: Data, String, Number, Date, Array, Dictionary. Xüsusi məlumat strukturlarını saxlamaq üçün onları Data-ya kodlamaq və yenidən dekodlamaq lazımdır.
İstifadə olunan protokol Codable-dır (Encodable və Decodable-in birləşməsi).
-
Struktur tərifi: Struktur
Codableprotokoluna uyğun olmalıdır.struct MyData: Codable { let id: Int let name: String let isActive: Bool } -
Yadda saxlanması: Struktur
JSONEncoderistifadə edərəkData-ya kodlanır və User Defaults-ə saxlanılır.let myStruct = MyData(id: 1, name: "Example", isActive: true) // Data-ya kodlama let encoder = JSONEncoder() if let encodedData = try? encoder.encode(myStruct) { // Data açar ilə saxlanılır UserDefaults.standard.set(encodedData, forKey: "myCustomData") } else { // Kodlama xətası üçün emal print("Struktur kodlanmadı") } -
Oxuma: User Defaults-dan
Dataoxuyulur vəJSONDecoderistifadə edilərək yenidən struktur halına çevrilir.// Açar ilə Data alınır if let savedData = UserDefaults.standard.data(forKey: "myCustomData") { // Data strukturaya dekod edilir let decoder = JSONDecoder() if let loadedStruct = try? decoder.decode(MyData.self, from: savedData) { // Yüklənmiş strukturu istifadə edin print("Yüklənmiş struktur: \(loadedStruct)") } else { // Dekodlama xətası print("Data dekodlama uğursuz") } } else { // Data tapılmayıb print("Açar üçün data tapılmadı") }
Əsas nöqtələr:
- User Defaults böyük həcmdə məlumat və ya gizli məlumatların saxlanması üçün nəzərdə tutulmayıb.
CodablevəJSONEncoder/JSONDecoderistifadə etmək, xüsusi tipləriData-ya saxlamağın standart yoludur.try?istifadə edilməli və potensial xətalar idarə olunmalıdır.- Struktur massivlərinin saxlanması üçün də
Codableistifadə olunur.
// Struktur massivinin saxlanması nümunəsi
let dataArray: [MyData] = [
MyData(id: 1, name: "A", isActive: true),
MyData(id: 2, name: "B", isActive: false)
]
let encoder = JSONEncoder()
if let encodedArrayData = try? encoder.encode(dataArray) {
UserDefaults.standard.set(encodedArrayData, forKey: "myCustomArray")
}
// Struktur massivinin oxunması nümunəsi
if let savedArrayData = UserDefaults.standard.data(forKey: "myCustomArray") {
let decoder = JSONDecoder()
if let loadedArray = try? decoder.decode([MyData].self, from: savedArrayData) {
print("Yüklənmiş array: \(loadedArray)")
}
}