Питання звучить "масив масиву", але я думаю, що більшість людей, ймовірно, приходять сюди, просто бажаючи знати, як зберегти масив 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]()
Булівський масив
Зберегти масив
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 (
??
) дозволяє повернути збережений масив або порожній масив без збоїв. Це означає, що якщо об’єкт повертає нуль, тоді ??
замість нього буде використано значення, яке слідує за оператором.
- Як ви можете бачити, основна установка була однакова для
Int
, Bool
і Date
. Я також тестував це за допомогою Double
. Наскільки мені відомо, все, що ви можете зберегти у списку властивостей, буде працювати так.