以下代码在模拟器上运行良好,但在真实设备上出现异常:
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 设备。
编辑
在实际设备中,旧版本的应用程序在 NSArray 的 NSUserDefaults 中使用此键。感谢您的帮助!
最佳答案
看起来您的用户首选项中已存储的内容不是字典。
您可以像这样在开始时更改测试:
if (! [[[NSUserDefaults standardUserDefaults] objectForKey:@"favourites"]
isKindOfClass:[NSDictionary class]])
这将涵盖以下情况:您的用户默认值中没有任何内容,或者您有一个不是字典的对象。
关于objective-c - 真实设备上的 NSDictionary 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22988584/