如何存储多个颜色值并将其保存到UserDefaults - iOS

时间:2017-01-03 06:56:53

标签: ios swift nsmutablearray nsuserdefaults nsattributedstring

我正在创建一个富文本编辑器,其中包含一个带有属性文本的textView,该文本具有两个属性,颜色和字体样式。这些属性被分配给用户想要的任何选定文本范围,并且文本可以具有与用户需要的颜色和字体一样多的属性。注释应保存到磁盘。我在设置同时启动一种颜色,字体和范围属性时设法将磁盘保存到磁盘,现在我试图保存尽可能多的颜色属性,我不知道如何做到这一点,所以我想到我应该将它们存储在一个数组中,然后将这个数组保存到磁盘上。我有以下代码:

func didSelectColorCell(color: UIColor) {
    noteTextView.setAttributedValueAtSelectedTextRange(NSForegroundColorAttributeName, value: color)
    let colors = [color].append(color)
    UserDefaults.standard.store(colors, forKey: "selectedColor")
    let data = NSKeyedArchiver.archivedData(withRootObject: noteTextView.selectedRange)
    UserDefaults.standard.set(data, forKey: "selectedTextRange")
}

上述函数是一种符合我创建的委托协议的方法,用于从另一个视图控制器传递颜色值。

这是storecolors:函数:

func store(_ colors: [UIColor], forKey key: String) {
    set(NSKeyedArchiver.archivedData(withRootObject: colors), forKey: key)
}

编译器显示错误:

  

不能在[UIColor]

类型的不可变值上使用变异成员

如何使数组成为可变值?我应该以不同的方式处理它(不将颜色存储在数组中)吗?在此先感谢:)

0 个答案:

没有答案