アプリを起動した時にロード。アプリがバックグラウンドに入った時にセーブするのに調べた。
参考サイト。
アプリが非アクティブになったことをViewControllerで検知する方法 [UIApplicationDelegate] – MILLEN BOX
UIApplicationDelegateを設定してから、
NSNotificationCenter.defaultCenter().addObserver(self, selector: #selector(呼び出す関数), name: UIApplicationWillResignActiveNotification, object: nil)
を設置する。
んだったようだが、これもSwift3で変わったらしい。
参考サイト
swift 3.0 のメモ – Qiita
UIApplicationDelegateを設定してから、
NotificationCenter.default.addObserver(self, selector: #selector(呼び出す関数), name: NSNotification.Name.UIApplicationWillResignActive, object: nil)
をviewDidLoadにでも書いておくと良いみたい。
import UIKit class ViewController: UIViewController , UIApplicationDelegate{ (中略) override func viewDidLoad() { super.viewDidLoad() loadData() NotificationCenter.default.addObserver(self, selector: #selector(ViewController.saveData), name: NSNotification.Name.UIApplicationWillResignActive, object: nil) // Do any additional setup after loading the view, typically from a nib. } override func didReceiveMemoryWarning() { super.didReceiveMemoryWarning() // Dispose of any resources that can be recreated. } (中略) // MARK: セーブ・ロード func saveData() { // 「ud」というインスタンスをつくる。 let ud = UserDefaults.standard ud.set(count, forKey: "firstCount") ud.set(secondCount, forKey: "secondCount") ud.set(thirdCount, forKey: "thirdCount") ud.set(fourthCount, forKey: "fourthCount") ud.set(fifthCount, forKey: "fifthCount") print("セーブしました。") } func loadData() { let ud = UserDefaults.standard count = ud.integer(forKey: "firstCount") secondCount = ud.integer(forKey: "secondCount") thirdCount = ud.integer(forKey: "thirdCount") fourthCount = ud.integer(forKey: "fourthCount") fifthCount = ud.integer(forKey: "fifthCount") print("ロードしました。") } }
こんな感じで。