Хотите знать, может ли быть в состоянии сохранить массив в хранилище UserDefaults iOS.У меня есть экран с различными профилями, который будет использоваться в качестве предопределенного ввода в процессе заказа.Система входа в систему пользователя отсутствует, поэтому я планирую использовать для этой цели модуль UserDefaults вместо онлайн-хранилища базы данных.
Желаемый массив:
[
"Profile 1" : ["title" : "Ing.",
"salutation" : "Herr",
"fullname" : "Franz Bernstein Stiglitz"
"phone" : "13001300",
"email" : "john2doe@example.com",
],
"Profile 2" : ["title" : "Dr.",
"salutation" : "Herr",
"fullname" : "Joseph Keusch"
"phone" : "06606666800",
"email" : "jkeusch_1974@example.com",
],
]
![enter image description here](https://i.stack.imgur.com/lrOUJ.png)
У меня есть этот Struct with Model, и я могу хранить его как один KVS (без «логики массива»).
struct OrderingProfiles {
static let (titleKey, salutationKey, fullnameKey, phoneKey, emailKey) = ("title", "salutation", "fullname", "phone", "email")
static let userSessionKey = "com.save.usersession"
struct OrderingProfile {
var title: String?
var salutation: String?
var fullname: String?
var phone: String?
var email: String?
init(_ json: [String: String]) {
self.title = json[titleKey]
self.salutation = json[salutationKey]
self.fullname = json[fullnameKey]
self.phone = json[phoneKey]
self.email = json[emailKey]
}
}
static var saveOrderingProfile = { (title: String, salutation: String, fullname: String, phone: String, email: String) in
UserDefaults.standard.set([titleKey: title, salutationKey: salutation, fullnameKey: fullname, phoneKey: phone, emailKey: email], forKey: userSessionKey)
}
static var getOrderingProfile = { _ -> OrderingProfile in
return OrderingProfile((UserDefaults.standard.value(forKey: userSessionKey) as? [String: String]) ?? [:])
}(())
static func clearUserData(){
UserDefaults.standard.removeObject(forKey: userSessionKey)
}
}