我的代码中有一个简单的方法,如下所示:
- (BOOL)isFirstTimeLogin
{
NSString *t_gName =
[NSString stringWithFormat:@"%@", [[NSUserDefaults standardUserDefaults] objectForKey:kGroupIdentifierKey]];
if ([t_gName isEqualToString:@""] || t_gName == nil) {
DLog(@"LoginViewController, m:::isFirstTimeLogin, First time login happening.");
return YES;
}
DLog(@"LoginViewController, m:::isFirstTimeLogin, Not a first time login.");
return NO;
}
简单来说,它的作用就是转到“设置”包,并从 PSTextFieldSpecifier 检索一个值。如果我手动进入并添加一些任意文本,代码将按预期工作。但是,每当我第一次在新设备上安装该应用程序时,第一个条件执行为 false,而它应该为 true。单步执行代码后,gdb 证明该对象确实为 nil:
(gdb) po t_gName
(null)
我在这里可能做错了什么?为什么第一次安装应用程序时条件失败,并且 t_gName 是空/空 PSTextFieldSpecifier。我什至尝试在我的设置包中添加一个空字符串的 DefaultValue 。
[NSString stringWithFormat:@"%@", nil];
这会创建这样的东西:
@"(null)"
因此既不是nil
也不等于@""
.
顺便一提
- 你不需要
stringWithFormat:
at all.
- 不检查
string == nil
但对于!string
- 您不必检查空字符串,因为有一组或者它是
nil
.
- 使用比以下更好的名称
t_gName
,没有理由使用短名称。
像这样:
- (BOOL)isFirstTimeLogin
{
NSString *groupIdentifier = [[NSUserDefaults standardUserDefaults]
objectForKey:kGroupIdentifierKey];
if (!groupIdentifier) {
DLog(@"First time login.");
return YES;
}
DLog(@"Not a first time login.");
return NO;
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)