こんにちは。いつもありがとうございます。
NSUserDefaultを触っていた時にSIGABRTが出ました。
多分ArrayとStringの扱いをどこかで間違っていると思うのですが、まだわからず困っています。どこが間違っているのでしょうか。。
それとSIGABRTが出た時にどこを見て解決できますか?
宜しくお願いします。
Could not cast value of type '__NSCFArray' (0x10b10ee88) to 'NSString' (0x10a716ad8). (lldb)
0x10a2cc4da <+1786>: leaq -0x168(%rbp), %rsi
Swift
1 2import UIKit 3 4class ViewController: UIViewController, UITableViewDelegate, UITableViewDataSource { 5 6 @IBOutlet var textInput: UITextField! 7 @IBOutlet var table: UITableView! 8 9 10 //var fridgeItem = [String]() // this is going to init this array so i don't need to put anything in it. 11 //var freezerItem = [String]() 12 //var otherItem = [String]() 13 var items = [[String](),[String](),[String]()] 14 //Fridge, Freezer, Other 15 16 //refered:http://cabbalog.blogspot.com/2016/09/xcode8-swift3-nsuserdefaults.html 17 let ud = [UserDefaults.standard,UserDefaults.standard,UserDefaults.standard] 18 19 @IBOutlet var fridgeSegOutlet: UISegmentedControl! 20 @IBAction func fridgeSeg(_ sender: Any) { 21 if UserDefaults.standard.object(forKey: String(fridgeSegOutlet.selectedSegmentIndex)) != nil{ 22 items[fridgeSegOutlet.selectedSegmentIndex] = UserDefaults.standard.object(forKey: String(fridgeSegOutlet.selectedSegmentIndex)) as! [String] 23 } 24 print(fridgeSegOutlet.selectedSegmentIndex) 25 26 table.reloadData() 27 } 28 29 @IBAction func addItem(_ sender: Any) { 30 // Add item to list 31 if textInput.text != "" { 32 items[fridgeSegOutlet.selectedSegmentIndex].append(textInput.text!) 33 } 34 // Clear text input field 35 textInput.text = "" 36 37 // refresh table view 38 table.reloadData() 39 40 // save into memory 41 ud[fridgeSegOutlet.selectedSegmentIndex].set(items, forKey: String(fridgeSegOutlet.selectedSegmentIndex)) 42 43 self.textInput.resignFirstResponder() 44 } 45 46 override func viewDidLoad() { 47 super.viewDidLoad() 48 if UserDefaults.standard.object(forKey: String(fridgeSegOutlet.selectedSegmentIndex)) != nil{ 49 items[fridgeSegOutlet.selectedSegmentIndex] = UserDefaults.standard.object(forKey: String(fridgeSegOutlet.selectedSegmentIndex)) as! [String] 50 } 51 52 for index in 0...2{ 53 ud[index].set(items[index], forKey: String(index)) 54 } 55 } 56 57 public func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int{ 58 59 return items[fridgeSegOutlet.selectedSegmentIndex].count 60 } 61 62 public func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell{ 63 64 let cell = UITableViewCell(style: .default, reuseIdentifier: "Cell") 65 66 cell.textLabel?.text = items[fridgeSegOutlet.selectedSegmentIndex][indexPath.row] 67 68 return cell 69 70 } 71 72 func tableView(_ tableView: UITableView, commit editingStyle: UITableViewCellEditingStyle, forRowAt indexPath: IndexPath) { 73 if editingStyle == UITableViewCellEditingStyle.delete{ 74 items[fridgeSegOutlet.selectedSegmentIndex].remove(at: indexPath.row) 75 76 table.deleteRows(at: [indexPath], with: .automatic) 77 78 UserDefaults.standard.object(forKey: String(fridgeSegOutlet.selectedSegmentIndex)) 79 } 80 } 81 82 override func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?) { 83 self.view.endEditing(true) 84 } 85 86 override func didReceiveMemoryWarning() { 87 super.didReceiveMemoryWarning() 88 // Dispose of any resources that can be recreated. 89 } 90 91 92}

バッドをするには、ログインかつ
こちらの条件を満たす必要があります。