这个问题的意思是“数组数组”,但是我想大多数人可能只是想知道如何将数组保存到
UserDefaults。对于那些人,我将添加一些常见示例。
字符串数组
保存数组
let array = ["horse", "cow", "camel", "sheep", "goat"]let defaults = UserDefaults.standarddefaults.set(array, forKey: "SavedStringArray")
检索数组
let defaults = UserDefaults.standardlet myarray = defaults.stringArray(forKey: "SavedStringArray") ?? [String]()
整数数组
保存数组
let array = [15, 33, 36, 723, 77, 4]let defaults = UserDefaults.standarddefaults.set(array, forKey: "SavedIntArray")
检索数组
let defaults = UserDefaults.standardlet array = defaults.array(forKey: "SavedIntArray") as? [Int] ?? [Int]()
布尔数组
保存数组
let array = [true, true, false, true, false]let defaults = UserDefaults.standarddefaults.set(array, forKey: "SavedBoolArray")
检索数组
let defaults = UserDefaults.standardlet array = defaults.array(forKey: "SavedBoolArray") as? [Bool] ?? [Bool]()
日期数组
保存数组
let array = [Date(), Date(), Date(), Date()]let defaults = UserDefaults.standarddefaults.set(array, forKey: "SavedDateArray")
检索数组
let defaults = UserDefaults.standardlet array = defaults.array(forKey: "SavedDateArray") as? [Date] ?? [Date]()
对象数组
自定义对象(以及对象的数组)需要做更多的工作才能保存到
UserDefaults。请参阅以下链接以了解操作方法。
- 用于将颜色保存为UserDefaults的文档
笔记
- 使用nil合并运算符(
??
),您可以返回保存的数组或空数组而不会崩溃。这意味着如果对象返回nil,则将??
使用运算符后的值代替。 - 正如你所看到的,基本设置是为同一个
Int
,Bool
和Date
。我也用进行了测试Double
。据我所知,可以保存在属性列表中的任何内容都将像这样工作。



