iOS NSUserDefaults检查浮点键是否存在

时间:2012-08-27 17:18:51

标签: ios nsuserdefaults

我想检查NSUserDefaults中存储的浮点数是否已预先存在。 Apple文档表示如果密钥不存在,floatForKeyreturn 0

如何正确判断存储的0和不存在的密钥之间的区别?

3 个答案:

答案 0 :(得分:12)

查看是否已设置默认值的可靠方法是:

if (![[NSUserDefaults standardUserDefaults] valueForKey:@"foo"]) { ... }

无论数据类型如何,这都有效。

答案 1 :(得分:0)

如果objectForKey为nil,则不存在任何对象,因此NSUserDefaults中没有存储任何项目。

答案 2 :(得分:0)

感谢woz和Bernd Rabe。我的解决方案是:

    //Set volume
    id savedVolume = [[NSUserDefaults standardUserDefaults] objectForKey:@"GameVolume"];
    if (savedVolume == nil) //Check if volume not already saved (e.g. new install)
    {
        //Set default volume to 1.0
        float defaultVolume = 1.0;
        [[ApplicationController controller].soundManager setGlobalVolume: defaultVolume];
        [[NSUserDefaults standardUserDefaults] setFloat:defaultVolume forKey:@"GameVolume"];
    } else {
        float savedVolume = [[NSUserDefaults standardUserDefaults] floatForKey:@"GameVolume"];
        [[ApplicationController controller].soundManager setGlobalVolume: savedVolume];
    }

这看起来足够安全吗?