我正在创建一个富文本编辑器,其中包含一个带有属性文本的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]
类型的不可变值上使用变异成员
如何使数组成为可变值?我应该以不同的方式处理它(不将颜色存储在数组中)吗?在此先感谢:)