学习NSDictionary的时候,又是一次惊奇的发现跟Java里面的Map集合有类似的存储数据格式。
跟NSArray 一样,NSDictionary也有个可变的字典,那就是NSMutableDictionary,一些初始化的方法都类似,比如
NSMutableDictionary *mDic = [NSMutableDictionary dictionaryWithCapacity:5];
NSMutableArray *mArr = [NSMutableArray arrayWithCapacity:5];
mDic = [NSMutableDictionary dictionaryWithObjectsAndKeys:<#(id), ...#>, nil];
mArr = [NSMutableArray arrayWithObjects:<#(id), ...#>, nil];
都是非常类似的,了解了NSArray的一些方法,对NSDictionary也就有一些了解了。他们最大的不同就是一个是直接存储,一个是以key-value的形式存储。所以,在初始化之后的一些添加和修改,以及获取的方法上就有很大的区别了。对于NSArray的一些方法,目前已经掌握的差不多了。现在就只温习下NSDictionary的一些很有用的方法。
- (NSArray *)allKeys;
返回NSDictionary中的所有key组成的数组,当然对应的就有返回NSDictionary中所有value组成的数组 - (NSArray *)allValues;
在实际的项目中总是需要用到可变的东西,有很多是直接对数据进行操作的,所以就喜欢用可以变的存储集合。
在NSMutableDictionary的方法就更为常用了。
- (void)addEntriesFromDictionary:(NSDictionary *)otherDictionary;
把otherDictionary中的实体对象添加到自己的字典中来- (void)removeAllObjects;
清空目标字典,同时清除key和对应的value (经常用到)- (void)removeObjectForKey:(id)aKey;
- (void)setObject:(id)anObject forKey:(id <NSCopying>)aKey;
第一个是根据aKey来删除value,同时aKey也被删除;第二个是专属于字典的赋值方式,@interface NSMutableDictionary(NSKeyValueCoding)
/* Send -setObject:forKey: to the receiver, unless the value is nil, in which case send -removeObject:forKey:.
*/
- (void)setValue:(id)value forKey:(NSString *)key;
@end
对于这个setValue:forKey:方法;是在NSKeyValueCoding中添加的方法,所以也可以用,为了以防万一,尽量还是用它自己的方法。