2016-10-28 56 views
3

以下兩個示例中的哪一個最適合檢查NSUserdefaults中是否存在boolean關鍵字?檢查NSUserdefaults/UserDefaults中是否存在布爾關鍵字的正確方法

1-這是可以接受的嗎?

if NSUserDefaults.standardUserDefaults().boolForKey("myKey"){ 
    print("Key Does Exist") 
} 

2 - 這是首選的方法是什麼?

if (NSUserDefaults.standardUserDefaults().objectForKey("myKey") != nil) { 
    print("Key Does Exist") 
} 
+1

(1)和(2)是不同的。如果鍵的布爾值存在*和*值爲'true',則第一個條件爲真。請參閱文檔:https://developer.apple.com/reference/foundation/userdefaults/1416388-bool。 –

+2

爲什麼不通過'NSUserDefaults.registerDefaults'註冊默認值? – Szu

+0

@MartinR - 我明白了。第二個是否可以接受,用於檢查密鑰是否存在,而不管該值是什麼類型? –

回答

5

如果您想驗證如果事情是存儲的關鍵,第二個選項是罰款(SWIFT 3)。

if (NSUserDefaults.standardUserDefaults().object(forKey: "myKey") != nil) { 
    print("Key Does Exist") 
} 

object(forKey:)documentation提到,如果密鑰沒有發現nil返回。


但是,如果您想驗證如果事情是存儲的關鍵,它實際上是一個Boolean是:既不版本的罰款。

  • 首先verifies如果Boolean值存在,實際上是true
  • 第二個驗證對象是否存在,但不能確定它是否爲Boolean

檢查下列可能性(SWIFT 3):

if let boolValue = NSUserDefaults.standardUserDefaults().object(forKey: "myKey"), 
    boolValue is Bool { 
    // Boolean exists 
} 
+0

我只想知道一個密鑰是否存在,而不是它的價值。謝謝 –

+0

@ Dimitri Pavlutin - 爲了澄清一些事情,第二個例子對於檢查一個密鑰是否存在而不管其值是否正確? –

+0

非常感謝您的澄清和其他示例。快速的問題,關於你的Swift 3建議,如果我想檢查一個double,我會改變'Bool'是'Double'。 –

1

如果你想檢查是否存在一個值,你會使用第二種方法。 第一種方法你只是檢查值是否是真的還是假的 第一種方法是一樣的做

let booleanValue = NSUserDefaults.standardUserDefaults().boolForKey("myKey") 
    if booleanValue{ 

    } 

不過,對於價值 一個很好的方式做你正在嘗試做的第二個方法檢查是

if let booleanValue = NSUserDefaults.standardUserDefaults().boolForKey("myKey"){ 
    print(booleanValue)   
} 

,這將讓你得到訪問布爾和它給你的布爾作爲變量,你可以玩

相關問題