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
, Bool
y Date
. También lo probé con Double
. Hasta donde yo sé, cualquier cosa que pueda guardar en una lista de propiedades funcionará así.