保存数组<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")
    }
}