首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >保存Array<Color>

保存Array<Color>
EN

Stack Overflow用户
提问于 2022-02-05 15:43:44
回答 1查看 90关注 0票数 1

我有一个数组需要格式化为Array。我使用下面的代码在整个程序中保存它。

代码语言:javascript
复制
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")
    }
}

我的问题如下:

代码语言:javascript
复制
Cannot convert value of type '[String]?' to expected argument type '[Color]?'

我尝试将文本.stringArray更改为.array.mutableArray,但由此产生了更多的问题。有什么解决办法吗?

FYI,这里的目标是拥有一个动态存储的颜色数组。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-02-05 16:02:37

Color不能(直接)保存在UserDefaults中,因为它不符合属性列表。

但是它有一个description属性,可以由一个字符串初始化。

所以你可以把颜色映射到String,反之亦然。

请用小写字母命名属性。

代码语言:javascript
复制
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")
    }
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70999530

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档