保存数组<Color>
Saving an Array<Color>
我有一个数组需要格式化为数组。我使用下面的代码在整个程序中保存它。
var ScheduledStatusD:Array<Color> {
get {
// Get the standard UserDefaults as "defaults"
let defaults = UserDefaults.standard
return defaults.stringArray(forKey: "ScheduledStatusD") ?? [Color.gray]
}
set (newValue) {
// Get the standard UserDefaults as "defaults"
let defaults = UserDefaults.standard
defaults.set(newValue, forKey: "ScheduledStatusD")
}
}
我的问题如下:
Cannot convert value of type '[String]?' to expected argument type '[Color]?'
我试过将文本 .stringArray
更改为 .array
或 .mutableArray
,但由此产生了更多问题。有什么解决办法吗?
仅供参考,这里的目标是动态存储颜色数组。
Color
无法(直接)保存在 UserDefaults
中,因为它不符合 属性 列表。
但是它有一个description
属性可以用字符串初始化
因此您可以将颜色映射到 String
,反之亦然。
并请以小写字母开头的属性命名
var scheduledStatusD:Array<Color> {
get {
return UserDefaults.standard.stringArray(forKey: "ScheduledStatusD")?
.map{Color([=10=])} ?? [Color.gray]
}
set {
UserDefaults.standard.set(newValue.map(\.description), forKey: "ScheduledStatusD")
}
}
我有一个数组需要格式化为数组。我使用下面的代码在整个程序中保存它。
var ScheduledStatusD:Array<Color> {
get {
// Get the standard UserDefaults as "defaults"
let defaults = UserDefaults.standard
return defaults.stringArray(forKey: "ScheduledStatusD") ?? [Color.gray]
}
set (newValue) {
// Get the standard UserDefaults as "defaults"
let defaults = UserDefaults.standard
defaults.set(newValue, forKey: "ScheduledStatusD")
}
}
我的问题如下:
Cannot convert value of type '[String]?' to expected argument type '[Color]?'
我试过将文本 .stringArray
更改为 .array
或 .mutableArray
,但由此产生了更多问题。有什么解决办法吗?
仅供参考,这里的目标是动态存储颜色数组。
Color
无法(直接)保存在 UserDefaults
中,因为它不符合 属性 列表。
但是它有一个description
属性可以用字符串初始化
因此您可以将颜色映射到 String
,反之亦然。
并请以小写字母开头的属性命名
var scheduledStatusD:Array<Color> {
get {
return UserDefaults.standard.stringArray(forKey: "ScheduledStatusD")?
.map{Color([=10=])} ?? [Color.gray]
}
set {
UserDefaults.standard.set(newValue.map(\.description), forKey: "ScheduledStatusD")
}
}