我有一个嵌套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。如果您确实需要自定义行为,通常最好考虑组合而不是子类化。
任何建议,将不胜感激。