UserDefault가 존재하는지 확인 - Swift
아래와 같이 사용자 기본값이 존재하는지 확인하려고 합니다.
func userAlreadyExist() -> Bool {
var userDefaults : NSUserDefaults = NSUserDefaults.standardUserDefaults()
if userDefaults.objectForKey(kUSERID) {
return true
}
return false
}
하지만, 그 물체가 아직 존재하지 않을 때에도 그것이 항상 진실로 돌아올 것이라고 해도 상관없이?이것이 존재를 확인하는 올바른 방법입니까?
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
}
스위프트 5:
if UserDefaults.standard.object(forKey: "keyName") != nil {
//Key exists
}
예, 이것이 올바른 확인 방법입니다.optional
갖고 있다nil
또는 어떤 가치라도objectForKey
메서드 반환AnyObject?
어느 것이Implicit optional
.
그래서 만약에userDefaults.objectForKey(kUSERID)
평가한 것 이상의 가치가 있습니다.true
.한다면userDefaults.objectForKey(kUSERID)
가지다nil
평가한 것보다 더 가치 있는false
.
swift programming guide에서
if 문 및 강제 언래핑 if 문을 사용하여 옵션에 값이 포함되어 있는지 여부를 확인할 수 있습니다.옵션에 값이 있으면 true로 평가하고, 값이 전혀 없으면 false로 평가합니다.
이제 키를 설정한 후보다 시뮬레이터에 버그가 있습니다.userDefaults
앱을 삭제해도 항상 설정된 상태로 유지됩니다.시뮬레이터를 리셋해야 합니다.
키를 설정하기 전에 시뮬레이터를 재설정합니다.userDefaults
또는 키 제거userDefaults.removeObjectForKey(kUSERID)
부터userDefaults
다시 돌아올 겁니다NO
.장치에서 해결됩니다.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")
}
여기에 있는 많은 솔루션이 유효합니다.그래도 틀린 문제는 해결해 주는 것 같아요.
일반적으로 이와 같은 코드는 다른 기본값을 사용할 수 있도록 값이 설정되어 있는지 확인하는 데 사용됩니다.
if isKeyPresentInUserDefaults(key: "username") {
return UserDefaults.standard.string(forKey: "username")
} else {
return "No username was set"
}
키가 설정되었든 안 되었든 상관하지 않으셔도 됩니다.기본값을 사용하기 위한 훨씬 더 우아한 접근 방식이 있습니다.UserDefaults
:
UserDefault.standard.register(defaults: ["username": "No username was set"])
앱을 실행할 때 이 코드를 실행하면 다음 호출이 수행됩니다.UserDefaults.standard.string(forKey: "username")
의 기본값을 반환합니다."No username was set"
아직 키에 대한 값이 설정되지 않은 경우.
신속하게 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
}
}
}
또는 이 라이브러리를 사용해 보십시오: 링크
func keyExists(key: String) -> Bool {
guard let _ = UserDefaults.standard.object(forKey: key) {
return false;
}
return true;
}
override func viewDidLoad(){
super.viewDidLoad()
if UserDefaults.standard.string(forKey: "CHARRY") == "CHARRY"{
print("true")
}else{
print("false")
}
}
언급URL : https://stackoverflow.com/questions/25104700/check-if-userdefault-exists-swift
'programing' 카테고리의 다른 글
jQuery Element의 마진과 패딩을 얻는 방법? (0) | 2023.09.15 |
---|---|
C11의 __STDC_VERSION__ 값은 얼마입니까? (0) | 2023.09.15 |
WordPress의 댓글 게시를 위해 작은 MCE 리치 텍스트 편집기를 활성화하는 방법은 무엇입니까? (0) | 2023.09.15 |
웹 호스트로부터 소스 코드를 보호하려면 어떻게 해야 합니까? (0) | 2023.09.15 |
엔티티 프레임워크는 매 컴파일 후 처음 로드되는 속도가 매우 느림 (0) | 2023.09.15 |