0

我有一个嵌套NSMutableDictionary,并且成功地提取了嵌套在其他字典中的某个“深度”的值,例如:

NSNumber *num = [myDictionary valueForKeyPath:@"league.team.away.score"];

一切都很好。而且我可以确认所有级别的所有字典都是可变的。

但是......如果那个关键路径不存在怎么办?

正如所料,我得到一个NSUndefinedKeyException. 我尝试使用 try/catch 策略进行修复,但无济于事。

苹果对此问题的解决方案压倒一切valueForUndefinedKey

“子类可以覆盖此方法以返回未定义键的替代值。默认实现引发 NSUndefinedKeyException。”

太好了...所以我创建了一个子类NSMutableDictionaryMod,然后我收到了投诉... [NSMutableDictionary initWithCapacity:]仅为抽象类定义的方法。定义-[NSMutableDictionaryMod initWithCapacity:]!

我去定义所说的初始化程序(并且可以确认它在Xcode中到达那里),但是它在线上崩溃了self = [super initWithCapacity:numItems];

然后我注意到这个苹果宝石NSMutableDictionary

通常应该很少需要继承 NSMutableDictionary。如果您确实需要自定义行为,通常最好考虑组合而不是子类化。

任何建议,将不胜感激。

4

0 回答 0