以下代码让我崩溃
[[NSUserDefaults standardUserDefaults] dictionaryForKey:@"2453"];
我检查过并发现NSUserDefaults中没有名称为2453的密钥。我是第一次运行应用程序所以这个密钥不会存在,但会在稍后的时间点添加。如何忽略这次崩溃。
答案 0 :(得分:2)
如果这一行
[[NSUserDefaults standardUserDefaults] dictionaryForKey:@"2453"];
是崩溃的行,您可以尝试使用
NSDictionary *dict = nil;
if ([[NSUserDefaults standardUserDefaults] objectForKey:@"2453"] != nil)
dict = [[NSUserDefaults standardUserDefaults] dictionaryForKey:@"2453"];
if (dict) {
...
}
我的预感是,在这种情况下,dictionaryForKey
在幕后调用objectForKey
并盲目地尝试将nil
投射到NSDictionary
,我想,导致崩溃。但是,如果首先检查自己是否存在该键的任何对象,则可以避免崩溃。给它旋转并报告回来! : - )
答案 1 :(得分:0)
[[NSUserDefaults standardUserDefaults] dictionaryForKey:@"2453"];
// ^^ ^
-dictionaryForKey:
must be an NSString中的“关键字”。它不能是int
。因此,虽然您提供的密钥仅包含数字,但您仍然必须使用@"..."
传入字符串。密钥不存在的事实与崩溃无关。
答案 2 :(得分:0)
if ([[NSUserDefaults standardUserDefaults] dictionaryForKey:@"2453"]) {
// this line will only be reached if there is something for @"2453"
}