子类化NSMutableDictionary

Ben*_*Ben 12 iphone objective-c subclassing nsmutabledictionary ios

我试图实现一个NSMutableDictionary的子类,它返回nil而不是在字典中不存在键时抛出NSUndefinedKeyException.

但是,当我尝试将对象添加到我的字典中时,我得到了

[NSMutableDictionary setObject:forKey:]: method only defined for abstract class
Run Code Online (Sandbox Code Playgroud)

NilDictionary.h

@interface NilDictionary : NSMutableDictionary {
} 
@end
Run Code Online (Sandbox Code Playgroud)

NilDctionary.m

@implementation NilDictionary
- (id)valueForUndefinedKey:(NSString *)key {
  return nil;
}
@end
Run Code Online (Sandbox Code Playgroud)

我是否真的必须在我的子类中再次实现NSMutableDictionary中的所有方法,或者是否有其他类我应该进行子类化?

澄清:我原来的问题归结为我无法正确阅读文档.

如果你需要子类NSMutableDictionary,请检查正确的答案.如果你想要一个在你的密钥不存在时返回nil的字典,NSMutableDictionary已经这样做了.

Emp*_*ack 25

NSMutableDictionary类参考说:

在子类中,您必须覆盖它们的两个基本方法:

1. setObject:forKey:
2.removeObjectForKey:

您还必须覆盖NSDictionary该类的基本方法.


NSDictionary类参考说:

如果确实需要子类NSDictionary,则需要考虑由a表示的Class cluster- 因此,这些方法在概念上基于几种原始方法:

1. count
2. objectForKey:
3.keyEnumerator
4. initWithObjects:forKeys:count:

在子类中,您必须覆盖所有这些方法.

NSDictionary’s其他方法通过调用这些原语中的一个或多个来操作.非原始方法提供了一次访问多个条目的便捷方式.


您似乎需要覆盖所有这六种方法,以使您的NSMutableDictionary子类完美运行.