[英]Checking if Username Exists in NSUserDefaults?
我當前要檢查用戶名是否存在於NSUserDefaults中,如果不存在,則不希望加載模式視圖控制器。 問題是,即使用戶名是nil,它也仍然像存在一樣起作用。 這是我所擁有的:
//Check if the login data exists
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
if ([defaults objectForKey:@"username"] != nil) {
//Load Login View if no username is found
NSLog(@"No username found");
LoginViewController *loginView = [[LoginViewController alloc] init];
[self presentViewController:loginView animated:YES completion:nil];
}
else {
NSString *savedUsername = [defaults stringForKey:@"username"];
NSLog(@"Username found: %@", savedUsername);
}
我一直在我的NSLog中獲取此消息: Username found: (null)
任何幫助,將不勝感激!
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
if ([defaults objectForKey:@"username"] == nil) {
//Load Login View if no username is found
NSLog(@"No username found");
LoginViewController *loginView = [[LoginViewController alloc] init];
[self presentViewController:loginView animated:YES completion:nil];
}
else {
NSString *savedUsername = [defaults stringForKey:@"username"];
NSLog(@"Username found: %@", savedUsername);
}
if ( ! [defaults objectForKey:@"username"] )
您正在使用!= nil
,這與您想要的相反。 將您的第一個if語句更改為:
if ([defaults objectForKey:@"username"] == nil) {
要不就:
if (![defaults objectForKey:@"username"]) {
首先,從手機/模擬器中刪除該應用
以此替換代碼 ,然后運行
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
if ([defaults objectForKey:@"username"] == nil) {
//Load Login View if no username is found
NSLog(@"No username found");
//set the username,
[defaults setObject:@"username_1" forKey:@"username"];
LoginViewController *loginView = [[LoginViewController alloc] init];
[self presentViewController:loginView animated:YES completion:nil];
}
else {
NSString *savedUsername = [defaults stringForKey:@"username"];
NSLog(@"Username found: %@", savedUsername);
}
提提您
將對象保存為鍵“用戶名”后,此條件以后總是返回false,
([defaults objectForKey:@"username"] == nil)
如果刪除以前的安裝。 UserDefaults自動被刪除。 那么只有您可以嘗試此方法是否有效([defaults objectForKey:@“ username”] == nil)
您可以簡單地嘗試此操作,而無需使用nil
。
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
if (![defaults objectForKey:@"Username"]) {
} else {
}
正如其他人已經指出的那樣,您的測試
if ([defaults objectForKey:@"username"] != nil)
是錯的。 但是即使
if ([defaults objectForKey:@"username"] == nil)
如果用戶默認值包含不是字符串的 “ username”值,則會遇到問題 。 在這種情況下, objectforKey
返回一個值,但是stringForKey
返回nil
。
因此,您應該只使用stringForKey
:
NSString *savedUsername = [defaults stringForKey:@"username"];
if (savedUsername == nil) {
//Load Login View if no username is found
NSLog(@"No username found");
// ...
} else {
NSLog(@"Username found: %@", savedUsername);
}
如果您對NULL和NIL感到困惑,也可以使用以下方法:
NSUserDefaults *prefs = [NSUserDefaults standardUserDefaults];
NSString*value=[prefs objectForKey:@"username"];
NSLog(@"useremail %@",value);
value=[value stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceCharacterSet]];
if ([value length]>0)
{
NSString *savedUsername = [defaults stringForKey:@"username"];
NSLog(@"Username found: %@", savedUsername);
}
else {
NSLog(@"No username found");
LoginViewController *loginView = [[LoginViewController alloc] init];
[self presentViewController:loginView animated:YES completion:nil];
}
嘗試這種方式。
NSUserDefaults *Def = [NSUserDefaults standardUserDefaults];
if (![Def objectForKey:@"Username"])
{
// Code
}
else
{
//Code
}
這確實會對您有幫助。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.