从NSUserDefaults
获取数组后,我在尝试更改Mutating method sent to immutable object
值时遇到NSMutableArray
错误;
generalDone[self.todoTableView.selectedRow] = 1
保存到NSUserDefaults
时,我将所有NSMutableArray
添加到一个NSMutableArray
。等;
var saveArray:NSMutableArray = NSMutableArray()
saveArray.removeAllObjects()
saveArray.add(generalTodos)
..
..
..
saveArray.add(generalDone)
UserDefaults.standard.set(saveArray, forKey: "test3")
但是当我从NSUserDefault获取数组时,我确定它是一个mutableCopy()。
if UserDefaults.standard.value(forKey: "test3") != nil {
saveArray = UserDefaults.standard.mutableArrayValue(forKey: "test3").mutableCopy() as! NSMutableArray
generalTodos = saveArray[0] as! NSMutableArray
generalDone = saveArray[1] as! NSMutableArray
}
仍然得到同样的错误。也许是愚蠢的想法,但我认为saveArrays中的数组仍然不可变。但不知道如何管理它们。你的想法是什么?
努力学习快速。请礼貌。 -_-
答案 0 :(得分:1)
如果你打算使用Objective-C NSMutableArray,说as! NSMutableArray
不会成为一个;制作NSMutableArray的方法就是说
let mutableArray = NSMutableArray(array: otherArray)
但是你应该使用Swift数组,而不是Objective-C NSArray / NSMutableArray。要使Swift数组变为可变,请使用var
声明它,而不是let
。例如,如果generalTodos
是一个字符串数组,您可以说
var generalTodos = [String]()