La pregunta dice "matriz de matriz", pero creo que la mayoría de las personas probablemente vienen aquí solo para saber cómo guardar una matriz en UserDefaults . Para esas personas, agregaré algunos ejemplos comunes.
Matriz de cadenas
Guardar matriz
let array = ["horse", "cow", "camel", "sheep", "goat"]
let defaults = UserDefaults.standard
defaults.set(array, forKey: "SavedStringArray")
Recuperar matriz
let defaults = UserDefaults.standard
let myarray = defaults.stringArray(forKey: "SavedStringArray") ?? [String]()
Int matriz
Guardar matriz
let array = [15, 33, 36, 723, 77, 4]
let defaults = UserDefaults.standard
defaults.set(array, forKey: "SavedIntArray")
Recuperar matriz
let defaults = UserDefaults.standard
let array = defaults.array(forKey: "SavedIntArray") as? [Int] ?? [Int]()
Matriz bool
Guardar matriz
let array = [true, true, false, true, false]
let defaults = UserDefaults.standard
defaults.set(array, forKey: "SavedBoolArray")
Recuperar matriz
let defaults = UserDefaults.standard
let array = defaults.array(forKey: "SavedBoolArray") as? [Bool] ?? [Bool]()
Matriz de fechas
Guardar matriz
let array = [Date(), Date(), Date(), Date()]
let defaults = UserDefaults.standard
defaults.set(array, forKey: "SavedDateArray")
Recuperar matriz
let defaults = UserDefaults.standard
let array = defaults.array(forKey: "SavedDateArray") as? [Date] ?? [Date]()
Matriz de objetos
Los objetos personalizados (y en consecuencia las matrices de objetos) requieren un poco más de trabajo para guardar UserDefaults. Consulte los siguientes enlaces para saber cómo hacerlo.
Notas
- El operador de fusión nula (
??) le permite devolver la matriz guardada o una matriz vacía sin fallar. Significa que si el objeto devuelve nil, ??se utilizará en su lugar el valor que sigue al operador.
- Como se puede ver, la configuración básica es la misma para
Int, Booly Date. También lo probé con Double. Hasta donde yo sé, cualquier cosa que pueda guardar en una lista de propiedades funcionará así.