iOS: NSUserDefaults에서 부울 사용
그 때.rootViewController
응용프로그램이 로드되었습니다. 사용자 로그인 자격 증명이 저장되었는지 확인할 수 있습니다.NSUserDefaults
.
기본적으로 사용자가 응용 프로그램을 로드하고 로그인 자격 증명을 저장하지 않은 경우,modalAlertView
를 누르면 사용자가 자격 증명을 적절하게 저장할 수 있습니다.이것은 그것들을 구합니다.UITextField
각각의 조건.NSUserDefault
물건.그러나 이 저장이 완료되면 다음을 생성할 수 있습니다.NSUserDefault
어떤 개체가 부울이고 값을 예로 변경합니까?
부울이 이미 아니요로 설정되어 있고 사용자가 로그인 자격 증명을 저장할 때 부울도 예로 변경된다는 뜻입니까?
다음을 사용하여 부울을 설정할 수 있습니다.
[[NSUserDefaults standardUserDefaults] setBool:YES forKey:@"logged_in"];
[[NSUserDefaults standardUserDefaults] synchronize];
다음 코드를 사용하여 읽습니다.
if(![[NSUserDefaults standardUserDefaults] boolForKey:@"logged_in"]) {
[self displayLogin];
} else {
[self displayMainScreen];
}
에 방법이 있습니다.NSUserDefaults
불렀다registerDefaults:
이 방법을 사용하여 응용프로그램의 "기본값"을 설정합니다.기본적으로, 당신은 다음을 만듭니다.NSDictionary
기본 키 및 값("저장된 자격 증명" 키의 경우 NO)을 포함하고 있으며, 다음을 사용하여 등록합니다.registerDefaults:
앱 대리인의 경우 이 작업이 자주 수행됩니다.+ (void)initialize
기본값이 필요하기 전에 등록되도록 하는 방법입니다.이러한 값은 앱이 값을 바꾸지 않은 경우에만 사용됩니다.즉, 사용자의 .plist 파일에서 읽은 사용자 기본값과 같은 응용 프로그램 도메인에 키가 없으면 사용할 수 없습니다.
반면 로그인 자격 증명을 확인하고 누락된 경우 경고를 표시할 수 있습니다.이렇게 하면 부울 값을 로그인 자격 증명과 동기화된 상태로 유지할 필요가 없습니다.나중에 "로그인 자격 증명 삭제" 기능을 제공하는 경우 부울을 다시 "아니오"로 설정할 필요가 없습니다.로그인 자격 증명이 사용자의 기본값으로 저장된 경우 다음 작업을 수행합니다.
NSString *userID = [[NSUserDefaults standardUserDefaults] stringForKey:@"userID"];
NSString *password = [[NSUserDefaults standardUserDefaults] stringForKey:@"password"];
if (userID != nil && password != nil) {
// Code to log user in
} else {
// Code to pop up an alert
}
헨리크 P가 제안한 이 해결책.헤셀:
if(![[NSUserDefaults standardUserDefaults] boolForKey:@"logged_in"]) {
[self displayLogin];
} else {
[self displayMainScreen];
}
이 경우에는 사용할 수 있지만 실제로 키가 "아니오"로 설정되어 있으면 전혀 설정되지 않은 것처럼 결과가 표시되기 때문에 키가 설정된 경우에는 이 코드로 확인해서는 안 됩니다.대신에 나는 사용할 것입니다.
if([[NSUserDefaults standardUserDefaults] objectForKey:@"logged_in"] == nil) {
//Do something
}
먼저 설정할 필요가 없습니다.NO
키가 설정되어 있는지 확인할 수 있습니다.자격 증명이 완료되지 않은 경우 앱에서 자격 증명이 완료된 것으로 판단할 경우 자격 증명을 생성하고 다음으로 설정합니다.YES
.
다른 질문에 대한 내 대답을 확인하여 일반적으로 이 작업을 수행하는 방법은 다음과 같습니다.
스위프트 3에서
let Defaults = UserDefaults.standard()()
let exists = Defaults.bool(forKey: "isLoggedIn")
if !exists {
displayLoginScreen()
} else {
print("value exists..do something")
displayMainScreen()
}
에 대에우사용수있다습니할는리신다있니▁weatively▁use▁altern를 사용할 수 있습니다.object(forKey:)
그리고 나서 그것을 부울로 던집니다.
if let exists = Defaults.object(forKey: "isLoggedIn"), let isLoggedIn = exists.boolValue where isLoggedIn == true {
displayMainScreen()
} else {
displayLoginScreen()
}
스위프트 2.3
값을 저장하는 방법
NSUserDefaults.standardUserDefaults().setBool(false, forKey: "logged_in")
값을 가져오는 경우
if NSUserDefaults.standardUserDefaults().boolForKey("logged_in") == true {
dashboardScreen()
}else {
loginScreen()
}
스위프트 3.0
값을 저장하는 방법
UserDefaults.standard().setBool(true, forKey: "logged_in")
가치를 되찾다
UserDefaults.standard().bool(forKey: "logged_in"){
dashboardScreen()
}else {
loginScreen()
}
언급URL : https://stackoverflow.com/questions/3841166/ios-use-a-boolean-in-nsuserdefaults
'source' 카테고리의 다른 글
라디오 단추의 원 색 변경 (0) | 2023.08.22 |
---|---|
Ubuntu에서 기본 데이터 디렉토리 MariaDB를 변경한 후 테스트 파일을 생성할 수 없음 (0) | 2023.08.22 |
옵션이 선택되었는지 확인하는 방법은 무엇입니까? (0) | 2023.08.22 |
VS 코드에서 Git 누락 – 소스 제어 공급자 없음 (0) | 2023.08.22 |
매트 자동 완성 - 선택한 옵션에 액세스하는 방법은 무엇을 참조하십시오. (0) | 2023.08.22 |