#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
}}

トップ   編集 差分 履歴 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS