總之從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