web-dev-qa-db-ja.com

NSUserDefaultsキーが存在するかどうかを確認します

私のアプリケーションでは、次のコードを使用してキーを保存しています。

func saveKey(){
        var xmineSpillere = mineSpillere
        var defaults = NSUserDefaults.standardUserDefaults()
        defaults.setObject(xmineSpillere, forKey: "YourKey")
    }

しかし、どうすればキーが存在するかどうかを確認できますか?次のようなコードが必要です。

if key("YourKey") exists {
    println("key exists")
}
else {
    println("does not exist")
}

Swiftでこのようなことをするにはどうすればよいですか?

8
Eri-Sklii

まず、NSUserDefaultsに保存するたびに、 synchronize() メソッドを呼び出して、永続ドメインへの変更をディスクに書き込み、変更されていないすべての永続を更新する必要があります。ディスク上にあるものへのドメイン。

func saveKey(){
    var xmineSpillere = mineSpillere
    var defaults = NSUserDefaults.standardUserDefaults()
    defaults.setObject(xmineSpillere, forKey: "YourKey")
    defaults.synchronize()
}

synchronizeメソッドは定期的に自動的に呼び出されます。このメソッドは、自動同期を待つことができない場合(たとえば、アプリケーションが終了しようとしている場合)、またはユーザーのデフォルトを更新する場合にのみ使用してください。変更を加えていなくても、はディスク上にあります。

次に、次の方法で任意の値に到達できます。

if let key = NSUserDefaults.standardUserDefaults().objectForKey("YourKey"){
   // exist
}
else {
   // not exist
}

これがお役に立てば幸いです。

20
Victor Sigler

自分自身を見つけた、コード:

if (NSUserDefaults.standardUserDefaults().objectForKey("YourKey") != nil) {
            println("key exist")
        }
7
Eri-Sklii

この拡張機能をUserDefaultsに追加すると、次のことが役立ちます。

extension UserDefaults {
    func contains(key: String) -> Bool {
        return UserDefaults.standard.object(forKey: key) != nil
    }
}

キーが存在するかどうかは、次の方法で確認できます。

if UserDefaults.contains(key: "YourKey") {
    print("Key exist")
} else {
   print("Does not exist")
}
2
user7718859

Swift 3 +

if let key = UserDefaults.standard.object(forKey: "Key"){
  // exist
} else {
  // not exist
}
2
Rizwan Mehboob