如何处理'[<__ NSCFString 0x2f1730> valueForUndefinedKey:]:此类不是键值$ oid错误的键值编码

Zhe*_*hen 2 objective-c undefined key-value-coding ios

我遇到了错误(在主题中说明),因为有时属性'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"];
}
Run Code Online (Sandbox Code Playgroud)

但是,由于代码在检查阶段失败,它仍然无效.

我怎样才能实现一个检查,这样我才能从'$ oid'中获取问题_id?

Ila*_*ian 5

请尝试以下代码.

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