字典类
字典集合, 它是由“键-值”对构成的集合。
键集合不能重复,也就是说字典中的键必须是单值的;
值集合没有特殊要求。
键和值集合中的元素通常是字符串,但也可以是任何对象, 但是不能是nil。
词典可以使固定的,也可以是可变的。
可变词典中的记录可以动态添加和删除。
和数组对象不一样,词典对象是无序的。
这个字典类与java中的HashMap很相似,也是key-value的格式。
举例如下:
字典类数据结构模型,
如
图所示的“学生与学号”
集合;
与数组类一样, 字典
类也分为NSDictionary不可
变字典和NSMutableDictionar
y可变字典。
NSDictionary类
NSDictionary有很多方法, 下面是总结常用的方法:
count: 字典集合的长度;
objectForKey: 通过键获得值对象;
allKeys: 返回一个数组包含所有键;
dictionaryWithObjectsAndKeys: 类级构造方法;
initWithObjectsAndKeys: 实例构造方法;
count: 字典集合的长度;
objectForKey: 通过键获得值对象;
allKeys: 返回一个数组包含所有键;
dictionaryWithObjectsAndKeys: 类级构造方法;
initWithObjectsAndKeys: 实例构造方法;
-(NSEnumerator *)keyEnumerator
为词典中的所有键返回一个NSEnumerator对象
-(NSArray *)keysSortedByVauleUsingSelector:(SEL)selector
返回字典中的键数组,根据它的selector进行排序
-(NSEnumerator *)objectEnumerator
为词典中的所有值返回一个NSEnumerator对象
-(void)enumerateKeysAndObjectsUsingBlock(void(^)(id key, id obj, BOOL *stop))block
遍历字典的键-值
- #import <Foundation/Foundation.h>
- int main (int argc, const charchar * argv[]) {
- NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];
- NSArray * keys = [@"one two three four five" componentsSeparatedByString:@" "];
- NSArray * values = [@"alpha bravo charlie delta echo" componentsSeparatedByString:@" "];
- NSDictionary * dict = [[NSDictionary alloc] initWithObjects:values forKeys:keys];
- NSLog(@"%@", [dict description]);
- [dict release];
- [pool drain];
- return 0;
- }
NSArray * keys = [@“one two three four five”componentsSeparatedByString:@“ ”] 语句是将一个字符
串按照空格分割返回NSArray对象, 同理获得values对象,
然后使用 NSDictionary * dict = [[NSDictionary alloc] initWithObjects:values forKeys:keys] 语句
串按照空格分割返回NSArray对象, 同理获得values对象,
然后使用 NSDictionary * dict = [[NSDictionary alloc] initWithObjects:values forKeys:keys] 语句
把keys和values放入到不可变字典对象dict中。
NSMutableDictionary类
NSMutableDictionary 是NSDictionary的子类,
NSMutableDictionary有很多方法, 下面是总结常用的方法:
setObject: forKey: 通过键设值,若键存在,则替换;
removeObjectForKey: 按照键移除值;
NSMutableDictionary有很多方法, 下面是总结常用的方法:
setObject: forKey: 通过键设值,若键存在,则替换;
removeObjectForKey: 按照键移除值;
+(instancetype)dictionaryWithCapicity:size
-(instancetype)initWithCapicity:size
-(void)removeAllObjects
删除字典中的所有记录
- #import <Foundation/Foundation.h>
- int main (int argc, const charchar * argv[]) {
- NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];
- NSMutableDictionary *mutable = [[NSMutableDictionary alloc] init];
- // add objects
- [mutable setObject: @"Tom" forKey: @"tom@jones.com"];
- [mutable setObject: @"Bob" forKey: @"bob@dole.com" ];
- NSLog(@"%@", [mutable description]);
- [mutable release];
- [pool drain];
- return 0;
- }
NSMutableDictionary *mutable = [[NSMutableDictionary alloc] init] 是采用默认的init构造方法创建
NSMutableDictionary对象mutable。
NSMutableDictionary对象mutable。
[mutable setObject:@"Tom" forKey: @"tom@jones.com"] 语句是按照键tom@jones.com添加Tom对象。