字典的基本用法

来源:互联网 发布:罗永浩 支那人 知乎 编辑:程序博客网 时间:2024/06/07 12:21

1.字典初始化的方法

首先还是来看看如何创建字典。先看两个最常用的初始化方法:

+ (id)dictionaryWithObject:(id)anObject forKey:(id)aKey
+ (id)dictionaryWithObjectsAndKeys:(id)firstObject , ...

第1个方法一般用于单对键/值对字典的初始化;第2个方法一般用于多对键/值对字典的初始化。直接看范例:

NSDictionary * dic1 = [NSDictionary dictionaryWithObject:@"value" forKey:@"key"];
NSDictionary * dic2 = [NSDictionary dictionaryWithObjectsAndKeys:
        @"value1", @"key1", @"value2", @"key2", nil];

dic1有一对键/值对,就是@"value"和@"key",dic2有两对键/值对,分别是@"value1"和@"key1"、@"value2"和@"key2"。注意与数组那个方法类似,这里也需要一个"nil "结尾。

注意:dictionaryWithObjectsAndKeys这个方法很容易出错,主要是没有数清键/值对的个数,经常会漏掉某个或者错写,一定要引起重视,因为如果第一次写不好,后面查起来会很费精力。

2.字典取值的方法

之前提到人好比就是对象,名字好比就是关键字,从一个名字是可以找到一个人的,这个方法就是:

- (id)objectForKey:(id)aKey

看一个简单的例子就能明白这个方法的用法:

NSDictionary * dic = [NSDictionary dictionaryWithObjectsAndKeys:
        @"value1", @"key1", @"value2", @"key2", nil];
id  value = [dic objectForKey:@"key1"];

这里value的值就是@"value1",理解起来应该没有任何障碍吧?

3.可变字典的使用方法

接下来看看可变字典的一些常规使用方法:

- (void)setObject:(id)anObject forKey:(id)aKey
- (void)removeObjectForKey:(id)aKey

细心的读者可能会问:难道就这两个吗?不应该还有个addObject吗?

这里只有这两个:如果一个键/值对存在,setObject这个方法就是修改;如果一个键/值对不存在,这个方法就是增加。下面看个例子:

NSString *LAST=@"lastName";
NSString *FIRST=@"firstName";
 
NSMutableDictionary *dict=[NSMutableDictionary dictionaryWithObjectsAndKeys:
    @"Jo", FIRST, @"Smith", LAST, nil];
NSString *MIDDLE=@"middleInitial";
 //添加
[dict setObject: @"M" forKey:MIDDLE];

很明显,这里是添加,因为原本并没有@"middleInitial"这个关键字,如果将其改为如下代码:

NSString *LAST=@"lastName";
NSString *FIRST=@"firstName";
 
NSMutableDictionary *dict=[NSMutableDictionary dictionaryWithObjectsAnd-
Keys:
    @"Jo", FIRST, @"Smith", LAST, nil];
//修改
[dict setObject: @"M" forKey:LAST];

那么所做的就是修改了,将@"Smith"变成了@"M"。

移除的用法也很简单,举例如下:

NSString *LAST=@"lastName";
NSString *FIRST=@"firstName";

NSMutableDictionary *dict=[NSMutableDictionary dictionaryWithObjectsAnd-
Keys:
    @"Jo", FIRST,@"Smith", LAST, nil];
//移除后一个键/值对
[dict removeObjectForKey: LAST];

现在 dict里面就只有一个键/值对了。

另外NSMutableDictionary还提供一个整体拼接字典的方法:

- (void)addEntriesFromDictionary:(NSDictionary *)otherDictionary

这个方法在进行多个字典拼接的时候非常有用,举例如下:

//先定义需要使用的KEY
NSString *LAST=@"lastName";
NSString *FIRST=@"firstName";
NSString *SUFFIX=@"suffix";
NSString *TITLE=@"title";

NSMutableDictionary *dict=[NSMutableDictionary dictionaryWithObjectsAndKeys:
        @"Jo", FIRST, @"Smith", LAST, nil];

NSDictionary *newDict=[NSDictionary dictionaryWithObjectsAndKeys:
       @"Jones", LAST, @"Hon.", TITLE, @"J.D.", SUFFIX, nil];
//合并两个字典
[dict addEntriesFromDictionary: newDict];

这个方法会改变 dict字典对象的LAST所对应的值,另外再添加@"Hon."和TITLE、@"J.D. "和SUFFIX两个键/值对。

0 0
原创粉丝点击