文書   >   Foundation   >   Preferences   >   UserDefaults


クラス


UserDefaults


ユーザーのデフォルトデータベースとのインターフェイス。アプリの起動時を越えてキー値のペアを永続的に保存します。





概要


UserDefaults クラスは、デフォルトシステムと対話するためのプログラム的なインターフェイスを提供します。デフォルトシステムでは、アプリはユーザーの環境設定に一致するように動作をカスタマイズできます。たとえば、ユーザーが希望する測定単位やメディアの再生速度をユーザーが指定できるようにできます。アプリは、ユーザーのデフォルトデータベースのパラメータセットに値を割り当てることによって、これらの環境設定を保管します。パラメータは、起動時のアプリのデフォルト状態やデフォルトでの動作を決定するために使用されるため、デフォルト と呼ばれます。


実行時に、UserDefaults オブジェクトを使用して、アプリがユーザーのデフォルトデータベースから使用するデフォルト値を読み取るようにします。UserDefaults は、デフォルト値が必要になるたびにユーザーのデフォルトデータベースを開く必要がないように、情報をキャッシュします。デフォルト値を設定すると、プロセス内で同期的にそれは変更され、永続的な格納や他のプロセスと非同期的に変更されます。


重要: 環境設定サブシステムに直接アクセスしないでください。環境設定プロパティリストファイルを変更すると、変更が失われたり、変更が反映されなくなったり、アプリがクラッシュする可能性があります。環境設定を構成するには、代わりに macOS で defaults コマンドラインユーティリティを使用して下さい。


教育機関の管理されたデバイスを除き、ユーザーのデフォルトはローカルで 1 つのデバイス上に保存され、バックアップと復元のために保持されます。ユーザーに接続されたデバイス間で環境設定やその他のデータを同期するには、代わりに NSUbiquitousKeyValueStore を使用して下さい。


デフォルトオブジェクトの格納


NSUserDefaults クラスは、float、double、整数、ブール値、および URL などの一般的な型にアクセスするためのコンビニエンスメソッドを提供します。これらのメソッドについては、デフォルト値の設定 で説明しました。


デフォルトのオブジェクトは、NSDataNSStringNSNumberNSDateNSArray、または NSDictionary のインスタンス (またはコレクション、インスタンスの組み合わせ) のプロパティリストでなければなりません。他の型のオブジェクトを格納する場合は、通常は NSData のインスタンスを作成するためにアーカイブする必要があります。


変更可能なオブジェクトを値として設定した場合でも、UserDefaults から返される値は不変です。たとえば、"MyStringDefault" の値として可変文字列を設定した場合、string(forKey:) メソッドを使用しても後で取得する文字列は変更できません。変更可能な文字列をデフォルト値として設定して後で文字列を変更すると、set(_:forKey:) を再度呼び出さない限り、デフォルト値は変更された文字列値を反映しません。


詳細については、環境設定と設定プログラミングガイド を参照してください。


ファイル参照の永続化


ファイルの URL は、ファイルシステム内の場所を指定します。set(_:forKey:) メソッドを使用して特定のファイルの場所を保存し、ユーザーがそのファイルを移動すると、次回の起動時にはそのファイルを見つけることができない場合があります。ファイルシステム ID でファイルへの参照を格納するには、代わりに bookmarkData(options:includingResourceValuesForKeys:relativeTo:) メソッドを使用して NSURL ブックマークデータを作成し、set(_:forKey:) メソッドを使用して永続化します。次に、 URLByResolvingBookmarkData:options:relativeToURL:bookmarkDataIsStale:error: メソッドを使用して、ユーザーのデフォルトでファイル URLに 格納されているブックマークデータを解決できます。


デフォルトの変更に対する応答


キー値監視を使用して、特定のデフォルト値に対する更新の通知を受けられます。また、ローカルのデフォルトデータベースへのすべての更新の通知を受けるために、default 通知センターで didChangeNotification の監視者として登録することもできます。


詳細については、キー値監視プログラミングガイド および 通知プログラミングトピックス を参照してください。


管理下環境でのデフォルトの使用


あなたのアプリが管理下環境をサポートしている場合は、UserDefaults を使用して、管理者がユーザーの利益のために管理する環境設定がどれかを判断できます。コンピュータラボや教室などの管理下環境では、管理者または教師は、ユーザーのための一連のデフォルト環境設定を確立することによってシステムを構成できます。この方法で環境設定が管理されている場合 (管理下環境キーへのアクセス で説明したメソッドで判断されます)、コントロールを無効または非表示にしてユーザーがその環境設定を編集できないようにする必要があります。


詳細については、モバイルデバイス管理プロトコルリファレンス を参照してください。


教育機関で管理されているデバイス上で実行されているアプリは、iCloud のキー値保管を使用して、ユーザーの他のデバイス上の他のインスタンスと少量のデータを共有できます。例えば、教科書アプリは、ユーザーが読んでいる現在のページ番号を保存することができるので、起動時にアプリの他のインスタンスを同じページで開くことができます。


詳細については、環境設定と設定のプログラミングガイド 内の iCloud に環境設定を保存 を参照してください。


サンドボックスの考慮事項


サンドボックス化されたアプリは、以下の例外を除いて、他のアプリ用の環境設定にアクセスしたり変更することはできません。


addSuite(named:) メソッドを使用してサードパーティのアプリのドメインを追加しても、あなたのアプリはそのアプリの環境設定にアクセスできません。別のアプリの環境設定にアクセスしたり変更したりしようとしても、エラーは発生しません。代わりに、macOS は他のアプリケーションの実際の環境設定ファイルではなく、あなたのアプリのコンテナ内にあるファイルを読み書きします。


スレッドセーフティ


UserDefaults クラスはスレッドセーフです。


トピックス





標準のユーザーデフォルトオブジェクトの取得





ユーザーデフォルトオブジェクトの作成





デフォルト値の取得





デフォルト値の設定





デフォルトの削除





スイートの維持





デフォルトの登録





永続ドメインの維持





揮発性ドメインの維持





管理下環境キーへのアクセス





ドメイン





通知





遺産



関連





以下からの継承


NSObject





以下への準拠





目次
Xcode の新機能

  • 言語:Swift
  • SDK
  • iOS 2.0+
    macOS 10.0+
    tvOS 9.0+
    watchOS 2.0+

  • フレームワーク
  • Foundation
  • 概要
  • トピックス
  • 関連












  • トップへ(Foundation)












    トップへ(Foundation)












    トップへ(Foundation)












    トップへ(Foundation)












    トップへ(Foundation)












    トップへ(Foundation)












    トップへ(Foundation)












    トップへ(Foundation)












    トップへ(Foundation)












    トップへ(Foundation)












    トップへ(Foundation)












    トップへ(Foundation)












    トップへ(Foundation)












    トップへ(Foundation)












    トップへ(Foundation)












    トップへ(Foundation)












    トップへ(Foundation)












    トップへ(Foundation)












    トップへ(Foundation)












    トップへ(Foundation)












    トップへ(Foundation)












    トップへ(Foundation)












    トップへ(Foundation)












    トップへ(Foundation)












    トップへ(Foundation)












    トップへ(Foundation)












    トップへ(Foundation)












    トップへ(Foundation)












    トップへ(Foundation)












    トップへ(Foundation)












    トップへ(Foundation)












    トップへ(Foundation)












    トップへ(Foundation)












    トップへ(Foundation)












    トップへ(Foundation)