Sobes.tech
Junior

UserDefaults-də məlumatların kodlaşdırılması və dekodlaşdırılması haqqında danış.

sobes.tech Süni İntellekt

AI-dan cavab

UserDefaults məlumatları açar-dəyər formatında saxlayır. Birbaşa dəstəklənməyən (String, Int, Bool, Data, Array, Dictionary) xüsusi məlumat tipləri üçün kodlaşdırma/dekodlaşdırma tələb olunur. Codable protokolu istifadə olunur və bu, EncodableDecodable-ni birləşdirir.

Xüsusi tipin kodlaşdırılması nümunəsi:

struct User: Codable {
    let name: String
    let age: Int
}

let user = User(name: "Иван", age: 30)

PropertyListEncoderPropertyListDecoder vasitəsilə Codable obyektləri Data-ya kodlaşdırıb UserDefaults-da saxlamaq mümkündür.

Kodlaşdırma:

let encoder = PropertyListEncoder()
if let encoded = try? encoder.encode(user) {
    UserDefaults.standard.set(encoded, forKey: "currentUser")
}

Dekodlaşdırma:

if let savedData = UserDefaults.standard.data(forKey: "currentUser") {
    let decoder = PropertyListDecoder()
    if let loadedUser = try? decoder.decode(User.self, from: savedData) {
        print("Yüklənmiş istifadəçi: \(loadedUser.name), yaş: \(loadedUser.age)")
    }
}

Alternativ üsul (yeni layihələr üçün daha az tövsiyə olunur): NSCoding istifadə etmək və NSObject-dən irs almaq.

Yöntəmlərin müqayisəsi:

Yöntəm Protokol/Sinf Dəstək verdiyi Tipler Tələb olunan metodlar Asanlıq
Codable Codable (Encodable, Decodable) Dəyər və Referans Şərtlər ödənərsə avtomatik həyata keçirilməsi Yüksək
NSCoding NSCoding Referans ( NSObject tələb edir) init(coder:), encode(with:) Orta

Codable müasir və tövsiyə olunan yanaşmadır, istifadəsi asandır və avtomatik sintez olunur. NSCoding köhnə kodların dəstəyi üçün lazım ola bilər.