- 追加された行はこの色です。
- 削除された行はこの色です。
#author("2017-01-16T13:49:44+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
}}