我目前正在做这样的事情
NSDictionary *imageDataDictionary = nil;
imageDataDictionary = (NSDictionary *)metadataItem.value;
if(imageDataDictionary != nil)
{
if ([imageDataDictionary objectForKey:@"data"] != nil) <---Crashes
{
}
}
该应用程序崩溃
if ([imageDataDictionary objectForKey:@"data"] != nil)
因为它有0个键值对。 我想知道检查NSDictionary是否有效以及是否有任何键值对的正确方法
这是消息
2015-04-19 15:56:37.255 MBlast[61278:2115186] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[__NSCFData objectForKey:]: unrecognized selector sent to instance 0x7c16a7e0'
答案 0 :(得分:2)
您正在向NSDictionary投射未指定类型的对象。告诉编译器“相信我,这是一本字典。”
如果对象不是字典,你就会崩溃。这几乎肯定是在这里发生的事情。添加一些错误检查:
if (![mediadataItem.value isKindOfClass: [NSDictionary class]])
return; //The object isn't a dictionary. Bail.
NSDictionary *imageDataDictionary;
imageDataDictionary = (NSDictionary *)metadataItem.value;
if(imageDataDictionary != nil)
{
if ([imageDataDictionary objectForKey:@"data"] != nil) <---Crashes
{
}
}