1. ホーム
  2. ios

[解決済み] Swift で UserDefaults を使用するにはどうすればよいですか?

2022-05-08 07:02:32

質問

Swiftで文字列やブーリアンなどのデータを保存/取得するためにUserDefaultsを使用するにはどうすればよいですか?

どのように解決するのですか?

を参照してください。 NSUserdefault objectTypes

Swift 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 が他のすべての有効な場所で値を探した後、登録されたデフォルトを探し、quot; fallback" 値として使用できるようにすることを意味します。登録されたデフォルトは、アプリケーションの実行中に保存されることはなく、それを登録したアプリケーションだけが見ることができます。

デフォルト設定ファイルからのデフォルト値は自動的に登録されます。

例えば、起動時にアプリを検出し、保存起動のための構造体を作成します。

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スイート名

もう一つのプロパティ スイート名 主に アプリグループのコンセプト シナリオの例 こちら :

AndroidのSharedPreferencesのように、識別子でUserDefaults(異なるビジネスロジックでは、UserDefaultsを別々にグループ化する必要があります)を分けたいという使用例です。例えば、私のアプリのユーザーがログアウトボタンをクリックすると、アカウント関連のデフォルトはクリアされますが、デバイスの位置情報はクリアされません。

let user = UserDefaults(suiteName:"User")

userDefaults synchronizeの使用 詳細については、重複する回答に追記しました。