2
我想在NSUserDefaults中存儲一個可能爲0的整數。如何區分存儲爲0的整數和不存在的鍵存在於NSUserDefaults?Swift integerForKey:如果指定的鍵不存在,則此方法返回0
根據the NSUserDefaults docsintegerForKey
如果密鑰在NSUserDefaults中不存在,則返回0。所以,我的問題是:我如何區分不存在的密鑰和我存儲爲0的密鑰?
我想在NSUserDefaults中存儲一個可能爲0的整數。如何區分存儲爲0的整數和不存在的鍵存在於NSUserDefaults?Swift integerForKey:如果指定的鍵不存在,則此方法返回0
根據the NSUserDefaults docsintegerForKey
如果密鑰在NSUserDefaults中不存在,則返回0。所以,我的問題是:我如何區分不存在的密鑰和我存儲爲0的密鑰?
您可以通過使用objectForKey
方法,因爲這種方法不會自動返回0,但返回nil,如果該鍵不存在,請檢查:
if let yourInteger = NSUserDefaults.standardUserDefaults().objectForKey("yourKey"){
//Key exists
}
您可以創建一個擴展爲您NSUserDefaults的檢查:
extension NSUserDefaults {
func hasKey(key: String) -> Bool {
return objectForKey(key) != nil
}
}
一種方法是假定值存在。如果不是,默認值爲0,但它與存在的值是否不同,是0還是?如果你需要一個不同於0的默認值,可以使用'NSUserDefaults.registerDefaults',它將默認值賦予非現有密鑰,但不會覆蓋存在的密鑰值。 –
請注意,還有第三個選項:該鍵存在,但其值不是整數。 –