Sobes.tech
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 (EncodableDecodable-in birləşməsi).

  1. Struktur tərifi: Struktur Codable protokoluna uyğun olmalıdır.

    struct MyData: Codable {
        let id: Int
        let name: String
        let isActive: Bool
    }
    
  2. Yadda saxlanması: Struktur JSONEncoder istifadə edərək Data-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ı")
    }
    
  3. Oxuma: User Defaults-dan Data oxuyulur və JSONDecoder istifadə 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.
  • CodableJSONEncoder/JSONDecoder istifadə etmək, xüsusi tipləri Data-ya saxlamağın standart yoludur.
  • try? istifadə edilməli və potensial xətalar idarə olunmalıdır.
  • Struktur massivlərinin saxlanması üçün də Codable istifadə 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)")
    }
}