아래에 표시된 사용자 기본값이 있는지 확인하려고합니다.
func userAlreadyExist() -> Bool {
var userDefaults : NSUserDefaults = NSUserDefaults.standardUserDefaults()
if userDefaults.objectForKey(kUSERID) {
return true
}
return false
}
그러나 객체가 아직 존재하지 않더라도 항상 true를 반환하는 것은 무엇입니까? 이것이 존재를 확인하는 올바른 방법입니까?
답변
Astun은 훌륭한 대답을 가지고 있습니다. Swift 3 버전은 아래를 참조하십시오.
func isKeyPresentInUserDefaults(key: String) -> Bool {
return UserDefaults.standard.object(forKey: key) != nil
}
답변
코드를 복사 / 붙여 넣기했지만 Xcode 6.1.1에서 내 방식대로 오류가 발생했습니다. 결국 이렇게 보이고 매력적으로 작동합니다. 감사!
func userAlreadyExist(kUsernameKey: String) -> Bool {
return NSUserDefaults.standardUserDefaults().objectForKey(kUsernameKey) != nil
}
답변
예, 이것은 optional
have nil
또는 any value objectForKey
메서드 반환 을 확인하는 올바른 방법 AnyObject?
입니다 Implicit optional
.
따라서 userDefaults.objectForKey(kUSERID)
평가되는 값보다 true
. 경우 userDefaults.objectForKey(kUSERID)
이 nil
값을가로 평가보다 false
.
신속한 프로그래밍 가이드에서
If 문 및 강제 풀기
if 문을 사용하여 옵션에 값이 포함되어 있는지 확인할 수 있습니다. 옵션에 값이 있으면 true로 평가됩니다. 값이 전혀 없으면 false로 평가됩니다.
이제 시뮬레이터에서 키를 설정 한 후보다 버그가있어 userDefaults
앱을 삭제해도 항상 설정된 상태로 유지됩니다. 시뮬레이터를 재설정해야합니다.
당신의 시뮬레이터 리셋 에서 키를 설정하기 전에이 방법을 확인 userDefaults
하거나 키를 제거 userDefaults.removeObjectForKey(kUSERID)
에서 userDefaults
그것은 반환 NO
이 해결됩니다 CSTE 연구진 장치 iOS8 beta4
.
답변
이것은 본질적으로 다른 답변에서 제안한 것과 동일하지만 더 편리한 방법입니다 (Swift 3+).
extension UserDefaults {
static func contains(_ key: String) -> Bool {
return UserDefaults.standard.object(forKey: key) != nil
}
}
용법: if UserDefaults.contains(kUSERID) { ... }
답변
UserDefault에 값이 저장되었는지 확인하는 간단한 코드입니다.
let userdefaults = UserDefaults.standard
if let savedValue = userdefaults.string(forKey: "key"){
print("Here you will get saved value")
} else {
print("No value in Userdefault,Either you can save value here or perform other operation")
userdefaults.set("Here you can save value", forKey: "key")
}
답변
신속한 3.2
func userAlreadyExist(kUsernameKey: String) -> Bool {
return UserDefaults.standard.object(forKey: kUsernameKey) != nil
}
답변
public class PreferencesUtils {
private init() {
}
public static func setBoolData(boolValue: Bool, dataName: String) {
UserDefaults.standard.set(boolValue, forKey: dataName)
}
public static func getBoolData(dataName: String)-> Bool{
let defaults = UserDefaults.standard
if(defaults.value(forKey: dataName) != nil) {
return defaults.value(forKey: dataName)! as! Bool
} else {
return false
}
}
public static func saveStringData(data: String, dataName: String){
let preferences = UserDefaults.standard
preferences.set(data, forKey: dataName)
let didSave = preferences.synchronize()
if !didSave {
debugPrint("Not saved yet")
}
}
public static func getSavedStringData(dataName: String)-> String{
let defaults = UserDefaults.standard
if(defaults.value(forKey: dataName) != nil){
return defaults.value(forKey: dataName) as! String
} else {
return ""
}
}
public static func saveIntData(data : Int, dataName: String){
let preferences = UserDefaults.standard
preferences.set(data, forKey: dataName)
let didSave = preferences.synchronize()
if !didSave {
debugPrint("Not saved yet")
}
}
public static func getSavedIntData(dataName: String) -> Int {
let defaults = UserDefaults.standard
if(defaults.value(forKey: dataName) != nil){
return defaults.value(forKey: dataName) as! Int
}else{
return 0
}
}
}
또는 다음 라이브러리를 사용해 볼 수 있습니다. 링크