访问 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.. 确保“Cu​​rrentDBV”键在您的设置器代码中正确 【参考方案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 访问字符串返回 nil

在 plist 中写入字典有效,然后从 plist 返回中读取字典(空)

当我尝试通过 Bundle.main 访问它时,我的 plist 返回 nil,但我知道它在那里

如何访问从sql函数获取的java中的多个返回值

多次读取 plist 与创建对象并仅读取 plist 一次以访问 plist 中的数据

正确地将 info.plist 条目转换为 NS* 类型