147

UserDefaults を使用して、Swift で文字列、ブール値、およびその他のデータを保存/取得するにはどうすればよいですか?

4

14 に答える 14

389

ref: NSUserdefault objectTypes

スイフト3以上

UserDefaults.standard.set(true, forKey: "Key") //Bool
UserDefaults.standard.set(1, forKey: "Key")  //Integer
UserDefaults.standard.set("TEST", forKey: "Key") //setObject

取得する

 UserDefaults.standard.bool(forKey: "Key")
 UserDefaults.standard.integer(forKey: "Key")
 UserDefaults.standard.string(forKey: "Key")

削除する

 UserDefaults.standard.removeObject(forKey: "Key")

すべてのキーを削除

 if let appDomain = Bundle.main.bundleIdentifier {
UserDefaults.standard.removePersistentDomain(forName: appDomain)
 }

Swift 2以下

NSUserDefaults.standardUserDefaults().setObject(newValue, forKey: "yourkey")
NSUserDefaults.standardUserDefaults().synchronize()

取得する

  var returnValue: [NSString]? = NSUserDefaults.standardUserDefaults().objectForKey("yourkey") as? [NSString]

削除する

 NSUserDefaults.standardUserDefaults().removeObjectForKey("yourkey")


登録

registerDefaults: すべての検索リストの最後の項目に registrationDictionary を追加します。これは、NSUserDefaults が他のすべての有効な場所で値を検索した後、登録済みのデフォルトを検索し、それらを「フォールバック」値として役立つことを意味します。登録されたデフォルトは、アプリケーションの実行間で保存されることはなく、それらを登録したアプリケーションにのみ表示されます。

Defaults Configuration Files のデフォルト値が自動的に登録されます。

たとえば、起動からアプリを検出し、起動を保存するための構造体を作成します

struct DetectLaunch {
static let keyforLaunch = "validateFirstlunch"
static var isFirst: Bool {
    get {
        return UserDefaults.standard.bool(forKey: keyforLaunch)
    }
    set {
        UserDefaults.standard.set(newValue, forKey: keyforLaunch)
    }
}
}

アプリの起動時に既定値を登録します。

UserDefaults.standard.register(defaults: [
        DetectLaunch.isFirst: true
    ])

アプリの終了時に値を削除します。

func applicationWillTerminate(_ application: UIApplication) {
    DetectLaunch.isFirst = false

}

そして状態を確認してください

if DetectLaunch.isFirst {
  // app launched from first
}

UserDefaults スイート名

別の 1 つのプロパティスイート名、主に アプリ グループの概念に使用されます。ここから取ったシナリオの例:

ユースケースは、Android の SharedPreferences のような識別子で UserDefaults を分離したい場合です (別のビジネス ロジックでは、Userdefaults を個別にグループ化する必要がある場合があります)。たとえば、アプリのユーザーがログアウト ボタンをクリックすると、デバイスの場所ではなく、アカウントに関連するデフォルトをクリアしたいと思います。

let user = UserDefaults(suiteName:"User")

userDefaults synchronize の使用、詳細情報が重複した回答に追加されました。

于 2015-07-03T09:31:27.010 に答える
16

スウィフト 4 :

    UserDefaults.standard.set(object/value, forKey: "key_name")

取得する

    var returnValue: [datatype]? = UserDefaults.standard.object(forKey: "key_name") as? [datatype]

削除する

    UserDefaults.standard.removeObject(forKey:"key_name") 
于 2018-03-08T10:07:29.340 に答える
2
//Save
NSUserDefaults.standardUserDefaults().setObject("yourString", forKey: "YourStringKey")

//retrive
let yourStr : AnyObject? = NSUserDefaults.standardUserDefaults().objectForKey("YourStringKey")
于 2015-07-03T09:29:41.403 に答える