Вопрос гласит: «массив массивов», но я думаю, что большинство людей, вероятно, приходят сюда просто чтобы узнать, как сохранить массив в UserDefaults
. Для этих людей я добавлю несколько общих примеров.
Строковый массив
Сохранить массив
let array = ["horse", "cow", "camel", "sheep", "goat"]
let defaults = UserDefaults.standard
defaults.set(array, forKey: "SavedStringArray")
Получить массив
let defaults = UserDefaults.standard
let myarray = defaults.stringArray(forKey: "SavedStringArray") ?? [String]()
Int массив
Сохранить массив
let array = [15, 33, 36, 723, 77, 4]
let defaults = UserDefaults.standard
defaults.set(array, forKey: "SavedIntArray")
Получить массив
let defaults = UserDefaults.standard
let array = defaults.array(forKey: "SavedIntArray") as? [Int] ?? [Int]()
Массив Bool
Сохранить массив
let array = [true, true, false, true, false]
let defaults = UserDefaults.standard
defaults.set(array, forKey: "SavedBoolArray")
Получить массив
let defaults = UserDefaults.standard
let array = defaults.array(forKey: "SavedBoolArray") as? [Bool] ?? [Bool]()
Массив дат
Сохранить массив
let array = [Date(), Date(), Date(), Date()]
let defaults = UserDefaults.standard
defaults.set(array, forKey: "SavedDateArray")
Получить массив
let defaults = UserDefaults.standard
let array = defaults.array(forKey: "SavedDateArray") as? [Date] ?? [Date]()
Массив объектов
Пользовательские объекты (и, следовательно, массивы объектов) требуют немного больше работы для сохранения UserDefaults
. См. Следующие ссылки, чтобы узнать, как это сделать.
Ноты
- Оператор объединения nil (
??
) позволяет возвращать сохраненный массив или пустой массив без сбоев. Это означает, что если объект возвращает nil, то ??
вместо него будет использоваться значение, следующее за оператором.
- Как вы можете видеть, основная установка была одинакова для
Int
, Bool
и Date
. Я также тестировал это с помощью Double
. Насколько мне известно, все, что вы можете сохранить в списке свойств, будет работать так.