#author("2017-01-16T13:50:56+09:00","default:wikiwriter","wikiwriter") #author("2017-01-16T13:51:13+09:00","default:wikiwriter","wikiwriter") [[Swift]] &tag(Swift/設定の保存); *目次 [#p7976ea8] #contents *関連ページ [#d745d10d] -[[Swift]] *参考情報 [#s907be9d] *基本 [#o1027256] -[[NSUserDefaults Wrapper in swift:https://gist.github.com/fwhenin/b770228a982230bd8690]] -[[NSUserDefaultsにプロパティで値を保存・取得するSwiftラッパークラス | EasyRamble:http://easyramble.com/nsuserdefaults-wrapper-property-class.html]] -セキュリティを無視して良い場合はNSUserDefaultsを使用するのが簡単。 -クラスプロパティを使用する。 -セキュリティが必要な場合は、[[kishikawakatsumi/KeychainAccess: Simple Swift wrapper for Keychain that works on iOS and OS X:https://github.com/kishikawakatsumi/KeychainAccess]]を使うと便利。 *NSUserDefaultsのラッパー [#r7da3fc4] -AppSetting.swift #pre{{ import Foundation class AppSetting { static let ud = NSUserDefaults.standardUserDefaults() // set default settings here private struct Default { static let name: String = "Swift Taro" static let age: Int = 20 } // computed properties as class variables class var name: String { get { ud.registerDefaults(["name": Default.name]) return ud.objectForKey("name") as! String } set(newValue) { ud.setObject(newValue, forKey: "name") ud.synchronize() } } class var age: Int { get { ud.registerDefaults(["age": Default.age]) return ud.objectForKey("age") as! Int } set(newValue) { ud.setObject(newValue, forKey: "age") ud.synchronize() } } } }} -使用 #pre{{ デフォルト値を取得 AppSetting.name // => "Swift Taro" AppSetting.age // => 20 // 設定値を変更 AppSetting.name = "Ruby Ichiro" AppSetting.age = 30 // 変更された値を取得 AppSetting.name // => "Ruby Ichiro" AppSetting.age // => 30 }}