code

UserDefault가 있는지 확인-Swift

codestyles 2020. 11. 10. 08:08
반응형

UserDefault가 있는지 확인-Swift


아래에 표시된 사용자 기본값이 있는지 확인하려고합니다.

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
}

예, 이것은 optionalhave 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. 장치에서는에서 해결됩니다 iOS8 beta4.


이것은 본질적으로 다른 답변에서 제안한 것과 동일하지만 더 편리한 방법입니다 (Swift 3+).

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

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
}

참고URL : https://stackoverflow.com/questions/25104700/check-if-userdefault-exists-swift

반응형