以下代码在模拟器上正常工作,但在真实设备上我有例外:
if ([[NSUserDefaults standardUserDefaults] objectForKey:@"favorites"] == nil)
{
NSMutableDictionary *favorites = [[NSMutableDictionary alloc] init];
[[NSUserDefaults standardUserDefaults] setObject:favorites forKey:@"favorites"];
}
下一行代码的例外:
NSMutableDictionary *favorites = [NSMutableDictionary dictionaryWithDictionary:
[[NSUserDefaults standardUserDefaults] objectForKey:@"favorites"]];
这里有调试器消息:
*** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason:
'*** -[NSDictionary initWithDictionary:copyItems:]: dictionary argument is not
an NSDictionary'
我在iOS 7.1上使用iPad设备。
修改
在真正的设计中,旧版本的应用程序在NSUserDefaults中为NSArray使用了此密钥。谢谢你的帮助!
答案 0 :(得分:2)
看起来已经存储在用户首选项中的内容不是字典。
您可以在开头更改测试,如下所示:
if (! [[[NSUserDefaults standardUserDefaults] objectForKey:@"favourites"]
isKindOfClass:[NSDictionary class]])
这将涵盖用户默认值中没有任何内容,或者您有一个不是字典的对象的情况。