gpt4 book ai didi

ios - NSUserDefaults objectForKey 一直返回 nil,即使键存在

转载 作者:行者123 更新时间:2023-11-29 12:39:39 24 4
gpt4 key购买 nike

我正在尝试将数据保存在 NSUserDefaults 中。这段代码(和应用程序)第一次循环时,应该通过 if 语句。因为 NSUserdefaults 中没有保存数据,所以保存了名称:BoughtItem0、BoughtItem1、BoughtItem2、BoughtItem3。

但不知何故,在第一次循环代码后,第二次启动我的应用程序时,它一直在执行 if 语句。我的代码有什么问题?

for (int i = 0; i < [shopPrices count]; i++)
{
if ([[NSUserDefaults standardUserDefaults] objectForKey:@"BoughtItem%d"] == nil)
{
[[NSUserDefaults standardUserDefaults] setValue:@"NONO" forKey:[NSString stringWithFormat:@"BoughtItem%d", i]];
NSLog(@"BoughtItem%d", i);
}
else
{
NSLog(@"No new bought item keys made");
}
}

输出是:

BoughtItem0
BoughtItem1
BoughtItem2
BoughtItem3

最佳答案

您的问题是您在对 objectForKey 的调用中使用了格式字符串,但您忽略了对 stringWithFormat 的调用。我想你的意思是 -

for (int i = 0; i < [shopPrices count]; i++)
{
if ([[NSUserDefaults standardUserDefaults] objectForKey:[NSString stringWithFormat:@"BoughtItem%d",i]] == nil)
{
[[NSUserDefaults standardUserDefaults] setValue:@"NONO" forKey:[NSString stringWithFormat:@"BoughtItem%d", i]];
NSLog(@"BoughtItem%d", i);
}
else
{
NSLog(@"No new bought item keys made");
}
}

你在 setValue 中有它,只是不在你的 if 中,所以你正在检查键“BoughtItem%d”的存在,但你正在设置“BoughtItem0”...

关于ios - NSUserDefaults objectForKey 一直返回 nil,即使键存在,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25296841/

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