0
私はSwiftプログラミングには新しく、To-Do Listアプリケーションで作業しています。私は、ユーザーが入力した情報を保存する永続データストレージを使用しようとしていますが、私はエラー"Thread 1: signal SIGABRT
を取得しておく「私は、出力ログをチェックすると、私はエラーにスレッド1:シグナルSIGABRT変異メソッドが不変オブジェクトに送信されました。 '
を参照してください」キャッチされない例外によりにアプリを終了します 'NSInternalInconsistencyException'、理由: ' - [__ NSCFArray は、insertObject:atIndex:]:不変オブジェクトに送られた変異法'」
私のコードは以下の通りです私は、単純なテキストボックスとボタンを使用します。
@IBOutlet var text1: UITextField!
@IBAction func button1(_ sender: AnyObject) {
let listObject = UserDefaults.standard.object(forKey: "lists")
var items:NSMutableArray
if let tempitems = listObject as? NSMutableArray {
items = tempitems
items.addObjects(from: [text1.text!])
} else {
items = [text1.text!]
}
UserDefaults.standard.set(items, forKey: "lists")
text1.text = ""
}
を。
こんにちは..ありがとうございました。しかし、私が理解していないことは、コードのどの部分が不変のオブジェクトであるかということです。 NSMutableArrayとして指定したので、後で変更することができると思います。 –
**変数を可変であると宣言してから**不変の配列に割り当てる**不変にします。おそらくあなたの 'if let ...'行が成功するバグでしょう –