如何处理':这个类不是密钥$ oid'错误编码的密钥值

我碰到错误(在主题中陈述),因为有一些属性“ID”不存储在返回的JSON中包含“$ oid”的散列。 例如

有时我会得到:

“ID”:{ “$ OID”: “4eea972209f47a0028000140”}

其他时间我得到

“ID”: “4eea972209f47a0028000140”

我正在尝试在下面的代码中进行检查以迎合这种不规则性

if ([[question valueForKey:@"id"] valueForKey:@"$oid"]) { question_id = [[question valueForKey:@"id"] valueForKey:@"$oid"]; } else { question_id = [question valueForKey:@"id"]; } 

但是,在检查阶段代码失败仍然不起作用。

我怎样才能实现一个支票,以便我只从“$ oid”中提取question_id才存在?

尝试下面的代码。

 id quesDict = [question valueForKey:@"id"]; if( [quesDict isKindOfClass:[NSDictionary class]] ) { question_id = [quesDict valueForKey:@"$oid"]; } else { question_id = quesDict; } 

你需要检查[question valueForKey:@"id"]返回的是什么types,它有时看起来像是一个string,有时它是另一个KVC兼容的对象。 你的错误将在第一个如果陈述。