Iphone 如何知道是否存在NSUserDefault?

Iphone 如何知道是否存在NSUserDefault?,iphone,comparison,nsstring,nsuserdefaults,Iphone,Comparison,Nsstring,Nsuserdefaults,我使用什么条件才能知道我使用的默认值 NSUserDefaults *preftest; preftest=[NSUserDefaults standardUserDefaults]; NSString *opening = [preftest stringForKey:@"opening"]; 这就是我获取数据的方式。如果preftext stringForKey:@“opening”不存在,我想进入if条件。。。。所以我试着: if (opening == nil) { ...

我使用什么条件才能知道我使用的默认值

NSUserDefaults *preftest;
preftest=[NSUserDefaults standardUserDefaults];
NSString *opening = [preftest stringForKey:@"opening"];
这就是我获取数据的方式。如果preftext stringForKey:@“opening”不存在,我想进入if条件。。。。所以我试着:

if (opening == nil) {
    ...
    NSUserDefaults *pref = [NSUserDefaults standardUserDefaults];
    [pref setObject:@"OK" forKey:@"pass"];
    NSString *finalfr = [pref stringForKey:@"opening"];
    NSLog(@"(here's the new value of opening: %@ )", finalfr);
    ...
}

if (opening != nil) {
    NSLog(@" != nil");
    // http request}
但是inded,它不起作用


谢谢你帮助我

您可以将内容与返回布尔值的空字符串[Open isEqualToString:@”“]进行比较,而不是将指针与nil进行比较

我想进入if条件if 预文本stringForKey:@“打开” 不存在。已经存在

但是您正在测试它是否存在于
opening!=无
。 如果您想测试它是否不存在,那么它将是
opening==nil
或只是
!打开

NSUserDefaults *prefs = [NSUserDefaults standardUserDefaults];
NSString *opening = [prefs stringForKey:@"opening"];

if (!opening) {
    [prefs setObject:@"OK" forKey:@"opening"];
    opening = [prefs stringForKey:@"opening"];
    NSLog(@"(here's the new value of opening: %@ )", opening);
    // prints: (here's the new value of opening: OK )
}

NSUserDefaults的作用与NSDictionary类似–如果键没有值,它将返回nil,因此您的if条件应该有效。你怎么知道它没有呢?我把[pref setObject:@“OK”forKey:@“pass”];要设置NSUserDef。。。很明显,这会导致错误@albertamg:因此,如果默认值不存在或不包含字符串,则“[pref setObject:@“OK”forKey:@“pass”];”:-/@clement:
stringForKey:
返回
nil
。因此,如果您第一次比较
opening==nil
,它将进入if。如果在If中设置默认值,第二次它将不会进入If。如果默认值已经存在,您的原始代码只会进入“如果”。@albertamg:我已经用当前正在运行的代码更新了第一篇文章;-)@克莱门特:“通行证”的关键是什么?你想在这里完成什么?在你的新代码中,
finalfr
将始终是
nil
。@clement:检查我添加到我的答案中的代码,这就是你想要做的吗?只是一个简短的提示-这让我不再长白发:-)这可能不是这个问题的答案,但肯定回答了我的:-)1票