总之从NSUserDefaults
获得数组后,我得到Mutating method sent to immutable object
错误,当我试图改变NSMutableArray
值;突变方法发送到不可变对象错误与mutableCopy()
generalDone[self.todoTableView.selectedRow] = 1
当保存到NSUserDefaults
我将所有NSMutableArray
s到一个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数组仍然不可变。但不知道如何管理它们。你有什么想法?
试图快速学习。请有礼貌。 -_-
请问为什么要使用NSArray/NSMutableArray?他们是Objective-C可可类。你应该使用_Swift_数组。他们让事情变得更容易。 – matt
“但我想在saveArrays阵列仍然不可变”好想法。您可能正在制作'saveArrays'的可变副本,但这并不会使其内部的数组变为可变。 – matt
另外我会建议不要将数组数组保存到NSUserDefaults中。只需使用自己的密钥将'generalTodos'保存为自己的数组。 – matt