访问 plist 值返回 null
Posted
技术标签:
【中文标题】访问 plist 值返回 null【英文标题】:access plist value returning null 【发布时间】:2012-09-25 01:33:36 【问题描述】:我正在尝试访问我的 NSUserDefaults plist 中的 NSNumber Plist 条目。它最初设置为 0,但是当我尝试访问它以检查此值时,它返回为 null 并且 imi 不知道为什么。
这是我正在使用的代码
// setup user defaults ready for use
NSUserDefaults *prefs = [NSUserDefaults standardUserDefaults];
// gets the current data base version stored in default prefs plist
NSNumber *currentDataVersion = [prefs objectForKey: @"CurrentDBV"];
// Check Current DataVersion
NSLog(@"current dbv = %@", currentDataVersion); // logs (NULL)
我在我的应用委托的 applicationDidBecomeActive 中使用此代码。
【问题讨论】:
我不认为你必须设置 NSUserDefaults.. 确保“CurrentDBV”键在您的设置器代码中正确 【参考方案1】:你在 NSUserDefault 中有你的选择:
– setFloat:forKey:
– setInteger:forKey:
– setDouble:forKey:
现在检索它:
– floatForKey:
– integerForKey:
– doubleForKey:
例如这样:
[[NSUserDefaults standardUserDefaults] setFloat:3.15 forKey:@"key"];
float value = [[NSUserDefaults standardUserDefaults] floatForKey:@"key"];
NSLog(@"value: %.0f", value);
【讨论】:
【参考方案2】:试试这个 [prefs setObject:[NSNumber numberWithFloat:3.00] forKey:@"CurrentDBV"];
NSLog(@"当前 dbv = %f", [currentDataVersion floatValue]); // 日志(NULL)
【讨论】:
是的,可以设置它.. 但我只希望第一次发生这种情况.. 所以我想我可以检查 null.. 如果它的 null 分配它一个临时值,直到我给它是正确的 currentDBV.. with int - 你不能添加小数 - 所以它是 v1 / v2 /v3 > 最好使用双精度数。浮动可能会让人头疼。 我认为我的新负责人 ach 正在从我那里尝试将您的 setObject 放入 if 语句中。我想防止每次应用程序打开时将其设置为 3,并且仅在 durrentDBV 为null... 我怎么能不破坏东西。 关于 dbversion,它只会是一个 8 位数字。没有小数点,这就是我使用整数的原因。以上是关于访问 plist 值返回 null的主要内容,如果未能解决你的问题,请参考以下文章
在 plist 中写入字典有效,然后从 plist 返回中读取字典(空)
当我尝试通过 Bundle.main 访问它时,我的 plist 返回 nil,但我知道它在那里