2015-04-19 52 views
2

我想在NSUserDefaults中存儲一個可能爲0的整數。如何區分存儲爲0的整數和不存在的鍵存在於NSUserDefaults?Swift integerForKey:如果指定的鍵不存在,則此方法返回0

根據the NSUserDefaults docsintegerForKey如果密鑰在NSUserDefaults中不存在,則返回0。所以,我的問題是:我如何區分不存在的密鑰和我存儲爲0的密鑰?

+0

一種方法是假定值存在。如果不是,默認值爲0,但它與存在的值是否不同,是0還是?如果你需要一個不同於0的默認值,可以使用'NSUserDefaults.registerDefaults',它將默認值賦予非現有密鑰,但不會覆蓋存在的密鑰值。 –

+0

請注意,還有第三個選項:該鍵存在,但其值不是整數。 –

回答

4

您可以通過使用objectForKey方法,因爲這種方法不會自動返回0,但返回nil,如果該鍵不存在,請檢查:

if let yourInteger = NSUserDefaults.standardUserDefaults().objectForKey("yourKey"){ 
    //Key exists 
} 

您可以創建一個擴展爲您NSUserDefaults的檢查:

extension NSUserDefaults { 
    func hasKey(key: String) -> Bool { 
     return objectForKey(key) != nil 
    } 
} 
相關問題