当前位置:  开发笔记 > 编程语言 > 正文

如何使用NSUserDefaults正确工作(检索值)

如何解决《如何使用NSUserDefaults正确工作(检索值)》经验,为你挑选了1个好方法。

我的代码中有一个简单的方法,如下所示:

- (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;
}

这样做的目的是转到Settings包,并从PSTextFieldSpecifier中检索一个值.如果我手动进入并添加一些任意文本,代码将按预期工作.但是,每当我第一次在新设备上安装应用程序时,第一个条件就是执行为false,这应该是真的.单步执行代码后,gdb证明该对象确实是零:

(gdb)po t_gName
(null)

我在这里做错了什么?为什么第一次安装应用程序并且t_gName是空/空PSTextFieldSpecifier时条件失败.我甚至尝试在我的设置包中添加一个空字符串中的DefaultValue.



1> Georg Schöll..:
[NSString stringWithFormat:@"%@", nil];

这创建了这样的东西:

@"(null)"

因此,既不nil也不等于@"".

顺便说说

    你根本不需要stringWithFormat:.

    不要检查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;
}

推荐阅读
mobiledu2402852357
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有