に保存されているフロートが既に存在するかどうかを確認したいNSUserDefaults
。Appleのドキュメントでは、キーが存在しない場合はfloatForKey
そうなると示唆されています。return 0
保存された0キーと存在しないキーの違いを正しく区別するにはどうすればよいですか?
に保存されているフロートが既に存在するかどうかを確認したいNSUserDefaults
。Appleのドキュメントでは、キーが存在しない場合はfloatForKey
そうなると示唆されています。return 0
保存された0キーと存在しないキーの違いを正しく区別するにはどうすればよいですか?
デフォルトが設定されているかどうかを確認する信頼できる方法は次のとおりです。
if (![[NSUserDefaults standardUserDefaults] valueForKey:@"foo"]) { ... }
これは、データ型に関係なく機能します。
objectForKey が nil の場合、オブジェクトは存在しないため、NSUserDefaults にアイテムは保存されません。
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];
}
それは十分に安全に見えますか?