前提・実現したいこと
TextFieldに入力した数字をaTextに足した数をLabelに表示する機能を作っていて、アプリを再起動すると消えてしまうのでUserDefautlsを使って実装したいのですが、Labelに表示する所までは出来たのですがアプリをマルチタスクで上にスワイプして終了すると、UserDefaultsで保存していた内容が消えてしまいます。
発生している問題・エラーメッセージ
またTextFieldに何も入力せずにOKを押すと以下のエラーが出てしまいます。
エラーを調べているのですが今現在解決出来ていない現状です。
import UIKit var aText:Int = 0 class addViewController: UIViewController { @IBOutlet weak var textField: UITextField! override func viewDidLoad() { super.viewDidLoad() // textFieldの入力方法をナンバーパッドに設定 textField.keyboardType = UIKeyboardType.numberPad } @IBAction func okButton(_ sender: Any) { let textB = Int(textField.text!) aText = aText + textB! // Thread 1: Fatal error: Unexpectedly found nil while unwrapping an Optional value UserDefaults.standard.set(String(aText), forKey: "textKey") } }
該当のソースコード
import UIKit class ViewController: UIViewController { @IBOutlet weak var label: UILabel! override func viewDidLoad() { super.viewDidLoad() } override func viewDidAppear(_ animated: Bool) { super.viewDidAppear(animated) if let _ = UserDefaults.standard.object(forKey: "textKey") as? String { label.text = (UserDefaults.standard.object(forKey: "textKey") as! String) } } }
import UIKit var aText:Int = 0 class addViewController: UIViewController { @IBOutlet weak var textField: UITextField! override func viewDidLoad() { super.viewDidLoad() // textFieldの入力方法をナンバーパッドに設定 textField.keyboardType = UIKeyboardType.numberPad } @IBAction func okButton(_ sender: Any) { let textB = Int(textField.text!) aText = aText + textB! UserDefaults.standard.set(String(aText), forKey: "textKey") } }
2/25追記
import UIKit var aText:Int = 0 class addViewController: UIViewController { @IBOutlet weak var textField: UITextField! override func viewDidLoad() { super.viewDidLoad() // textFieldの入力方法をナンバーパッドに設定 textField.keyboardType = UIKeyboardType.numberPad } override func viewDidAppear(_ animated: Bool) { super.viewDidAppear(animated) if let _ = UserDefaults.standard.object(forKey: "textKey") as? Int { aText = (UserDefaults.standard.object(forKey: "textKey") as! Int) } } @IBAction func addButton(_ sender: Any) { let textB = Int(textField.text!) aText = aText + textB! UserDefaults.standard.set(String(aText), forKey: "textKey") } }
import UIKit class ViewController: UIViewController { @IBOutlet weak var label: UILabel! override func viewDidLoad() { super.viewDidLoad() } override func viewDidAppear(_ animated: Bool) { super.viewDidAppear(animated) if let _ = UserDefaults.standard.object(forKey: "textKey") as? String { label.text = (UserDefaults.standard.object(forKey: "textKey") as! String) } } }
試したこと
エラーとUserDefaultsを調べて、上記のコードを書いたのですが今現在解決はしていない状況です。
ご教示頂けると幸いです。
宜しくお願いします。
補足情報(FW/ツールのバージョンなど)
Swift4 Xcode10
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/02/25 01:15 編集
2019/02/25 01:17
2019/02/25 13:29 編集
2019/02/25 14:12
2019/02/26 00:55
2019/02/26 02:39