NSUserDefaults
から配列を取得した直後にNSMutableArray
の値を変更しようとしたときにMutating method sent to immutable object
エラーが発生しました。mutableCopy()で不変オブジェクトエラーに送信されたメソッド
generalDone[self.todoTableView.selectedRow] = 1
私は1 NSMutableArray
にすべてNSMutableArray
Sを追加しているNSUserDefaults
に保存します。好き。
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-
は、私が聞いても言うことができますか? Objective-C Cocoaクラスです。 _Swift_配列を使用する必要があります。彼らは物事をはるかに簡単にする。 – matt
"しかし、私はまだsaveArraysの配列が変更可能ではないと思っています。あなたは 'saveArrays'の可変コピーを作っているかもしれませんが、それはその中の配列を変更可能にしません。 – matt
また、配列の配列をNSUserDefaultsに保存しないことをお勧めします。 'generalTodos'を専用のキーを持つ独自の配列として保存してください。 – matt