我有一个数组需要格式化为Array。我使用下面的代码在整个程序中保存它。
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,但由此产生了更多的问题。有什么解决办法吗?
FYI,这里的目标是拥有一个动态存储的颜色数组。
发布于 2022-02-05 16:02:37
Color不能(直接)保存在UserDefaults中,因为它不符合属性列表。
但是它有一个description属性,可以由一个字符串初始化。
所以你可以把颜色映射到String,反之亦然。
请用小写字母命名属性。
var scheduledStatusD:Array<Color> {
get {
return UserDefaults.standard.stringArray(forKey: "ScheduledStatusD")?
.map{Color($0)} ?? [Color.gray]
}
set {
UserDefaults.standard.set(newValue.map(\.description), forKey: "ScheduledStatusD")
}
}https://stackoverflow.com/questions/70999530
复制相似问题