UserDefaults не получит мой массив строк правильно
Я пытаюсь создать механизм, который позволяет пользователям сохранять элементы в избранном (который представляет собой массив), а затем сохранять его в UserDefaults, однако я не могу заставить его правильно писать в UD. Печать UDSaved в приведенном ниже примере возвращает [], хотя я только что добавил элемент в массив.
У кого-нибудь есть идеи, что я делаю не так?
Это синтаксическая ошибка, и я не получаю это правильно или есть проблема с моей логикой?
var favouritesArray: [String] = []
func UDWrite() {UserDefaults.standard.set(favouritesArray, forKey: "UDfavouritesArray")}
let UDSaved = UserDefaults.standard.stringArray(forKey: "UDfavouritesArray") ?? [String]()
favouritesArray.append("element")
UDWrite()
print(UDSaved)
1 ответ
Решение
Как указано в комментариях: UDSaved
никогда не обновляется. Мое решение было бы сделать UDSaved
функция вроде так:
var favouritesArray: [String] = []
func UDWrite() {UserDefaults.standard.set(favouritesArray, forKey: "UDfavouritesArray")}
func UDSaved() -> [String] {return UserDefaults.standard.stringArray(forKey: "UDfavouritesArray") ?? [String]}()
favouritesArray.append("element")
UDWrite()
print(UDSaved())
Или вы можете сделать это вычисляемым свойством
var UDSaved: [String] {
return UserDefaults.standard.stringArray(forKey: "UDfavouritesArray") ?? [String]
}