gpt4 book ai didi

ios - 检查 standardUserDefaults 中的键是否已设置或为 NSNull

转载 作者:行者123 更新时间:2023-11-28 21:54:08 25 4
gpt4 key购买 nike

检查 standardUserDefaults 内容的正确方法是什么?

如果我打印出存储在 key 中的内容,我会得到:

NSLog(@"logged_in_status : %@", [standardUserDefaults stringForKey:@"logged_in_status"]);
Output: logged_in_status : (null)

所以好像是NSNull。

所以我将添加一个检查如下:

 if ([[standardUserDefaults objectForKey:@"logged_in_status"] isKindOfClass:[NSNull class]])
{
NSLog(@"YES");
}
else
{
NSLog(@"NO");
}

输出:否

为什么这不解决为是?它不是一个 NSNull 吗?

这个我看了好久,看不出哪里出错了。谁能解释一下我在这方面哪里做错了?

谢谢,代码

最佳答案

当您最初执行键查找时,您不会取回 NSNull 的实例,而是根本没有结果:换句话说,nil,这与 NSNull 不同。这通常意味着尚未在用户默认值中为该键设置任何值。 (如果你在单步执行时在调试器下查看它,你可以看到这一点——当你打印时,nil 的“字符串化”版本恰好是 "(null)"它到日志中,我认为这在一定程度上可能会造成混淆。)

(如果您不清楚这种区别,请查看这个问题的答案,了解您可能会遇到的各种形式的“null”之间的区别:What are the differences between nil, NULL and [NSNULL nil]?)

正如@Francescu 在评论中建议的那样,如果您尝试检查“是否已设置此值”,它可能类似于:

NSString * loggedInStatus = [standardUserDefaults stringForKey:@"logged_in_status"];
if (!loggedInStatus) {
NSLog(@"status not set");
} else {
NSLog(@"status: %@", loggedInStatus);
}

关于ios - 检查 standardUserDefaults 中的键是否已设置或为 NSNull,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27215953/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com