Дар бораи рамзгузорӣ ва шифркунии маълумот дар UserDefaults гап зан.
sobes.tech AI
Ҷавоб аз AI
UserDefaults маълумотҳоро дар формати калид-арзиш нигоҳ медорад. Барои намудҳои маълумоти фармоишӣ, ки мустақиман дастгирӣ намешаванд (String, Int, Bool, Data, Array, Dictionary), кодгузорӣ/декодгузорӣ лозим аст. Протоколи Codable истифода мешавад, ки Encodable ва Decodable-ро якҷоя мекунад.
Масали кодгузории намудҳои фармоишӣ:
struct User: Codable {
let name: String
let age: Int
}
let user = User(name: "Иван", age: 30)
Бо ёрии PropertyListEncoder ва PropertyListDecoder метавон объектҳои Codable-ро ба Data кодгузорӣ/декодгузорӣ кард барои нигоҳдорӣ дар UserDefaults.
Кодгузорӣ:
let encoder = PropertyListEncoder()
if let encoded = try? encoder.encode(user) {
UserDefaults.standard.set(encoded, forKey: "currentUser")
}
Декодгузорӣ:
if let savedData = UserDefaults.standard.data(forKey: "currentUser") {
let decoder = PropertyListDecoder()
if let loadedUser = try? decoder.decode(User.self, from: savedData) {
print("Користи боркашӣ: \(loadedUser.name), синну соли: \(loadedUser.age)")
}
}
Роҳи дигар (камтар тавсия дода мешавад барои лоиҳаҳои нав): истифодаи NSCoding бо мерос аз NSObject.
Мувофиқати усулҳо:
| Усул | Протокол/Класс | Дастгирии намудҳои арзишӣ/референсӣ | Методи зарурӣ | Осонӣ |
|---|---|---|---|---|
Codable |
Codable (Encodable, Decodable) |
Арзиш ва Референс | Иҷрои автоматӣ агар шароит иҷро шавад | Баланд |
NSCoding |
NSCoding |
Референс (зеро NSObject талаб мекунад) |
init(coder:), encode(with:) |
Миёна |
Codable усули муосир ва тавсияшуда аст, ки бо осонии истифода ва синтези автоматӣ маъруф аст. NSCoding метавонад барои дастгирии коди кӯҳна зарур шавад.