Pytanie brzmi „tablica tablic”, ale myślę, że większość ludzi prawdopodobnie przychodzi tutaj, chcąc się dowiedzieć, jak zapisać tablicę w UserDefaults
. Dla tych osób dodam kilka typowych przykładów.
Tablica ciągów
Zapisz tablicę
let array = ["horse", "cow", "camel", "sheep", "goat"]
let defaults = UserDefaults.standard
defaults.set(array, forKey: "SavedStringArray")
Pobierz tablicę
let defaults = UserDefaults.standard
let myarray = defaults.stringArray(forKey: "SavedStringArray") ?? [String]()
Tablica int
Zapisz tablicę
let array = [15, 33, 36, 723, 77, 4]
let defaults = UserDefaults.standard
defaults.set(array, forKey: "SavedIntArray")
Pobierz tablicę
let defaults = UserDefaults.standard
let array = defaults.array(forKey: "SavedIntArray") as? [Int] ?? [Int]()
Tablica Bool
Zapisz tablicę
let array = [true, true, false, true, false]
let defaults = UserDefaults.standard
defaults.set(array, forKey: "SavedBoolArray")
Pobierz tablicę
let defaults = UserDefaults.standard
let array = defaults.array(forKey: "SavedBoolArray") as? [Bool] ?? [Bool]()
Tablica dat
Zapisz tablicę
let array = [Date(), Date(), Date(), Date()]
let defaults = UserDefaults.standard
defaults.set(array, forKey: "SavedDateArray")
Pobierz tablicę
let defaults = UserDefaults.standard
let array = defaults.array(forKey: "SavedDateArray") as? [Date] ?? [Date]()
Tablica obiektów
Zapisywanie obiektów niestandardowych (a co za tym idzie tablic obiektów) wymaga trochę więcej pracy UserDefaults
. Zobacz poniższe łącza, aby dowiedzieć się, jak to zrobić.
Uwagi
- Operator łączenia nil (
??
) umożliwia zwrócenie zapisanej tablicy lub pustej tablicy bez awarii. Oznacza to, że jeśli obiekt zwróci nil, to ??
zamiast tego zostanie użyta wartość następująca po operatorze.
- Jak widać, podstawowa konfiguracja była taka sama dla
Int
, Bool
i Date
. Przetestowałem to również z Double
. O ile wiem, wszystko, co możesz zapisać na liście właściwości, będzie działać w ten sposób.