Objective-C字典操作全解析
立即解锁
发布时间: 2025-08-21 01:59:20 阅读量: 2 订阅数: 9 

### Objective-C 字典操作全解析
#### 1. 字典的创建
在 Objective-C 中,字典的创建方式与其他对象类似。可以使用 `alloc` 和 `init` 构造器,也可以使用像 `dictionaryWithObjects: forKeys:` 这样的便捷函数来创建字典。
如果使用 `NSDictionary` 创建字典,一旦字典创建完成,就无法对其进行修改。若需要创建后续可修改的字典,则应使用 `NSMutableDictionary`。
以下是一个创建包含不同语言“Hello World”的字典示例:
```objc
NSArray *listOfObjects = [NSArray arrayWithObjects:@"Hello World", @"Bonjour tout le monde", @"Hola Mundo", nil];
NSArray *listOfKeys = [NSArray arrayWithObjects:@"english", @"french", @"spanish", nil];
NSDictionary *dictionary2 = [NSDictionary dictionaryWithObjects:listOfObjects forKeys:listOfKeys];
```
`NSDictionary` 的 `arrayWithObjects: forKeys:` 构造器需要两个数组作为参数。第一个数组必须包含要存储的对象,第二个数组必须包含与这些对象关联的键。
如果选择使用 `NSMutableDictionary`,可以使用相同的构造器来创建数组(因为 `NSMutableDictionary` 是 `NSDictionary` 的子类)。也可以使用 `alloc` 和 `init` 来创建 `NSMutableDictionary`,因为后续可能会向数组中添加对象。
以下是 `NSDictionary` 和 `NSMutableDictionary` 可用构造器的完整列表:
| 构造器 | 描述 |
| --- | --- |
| `- (id)initWithObjects:(const id [])objects forKeys:(const id [])keys count: (NSUInteger)cnt;` | 使用指定的对象、键和数量初始化字典 |
| `- (id) initWithObjectsAndKeys: (id) firstObject, ... NS_REQUIRES_NIL_TERMINATION;` | 使用指定的以 `nil` 结尾的成对对象和键列表初始化字典 |
| `- (id)initWithDictionary:(NSDictionary *)otherDictionary;` | 使用另一个字典初始化字典 |
| `- (id)initWithDictionary:(NSDictionary *)otherDictionary copyItems:(BOOL)flag;` | 使用另一个字典初始化字典,并可选择为每个对象创建新副本 |
| `- (id)initWithObjects:(NSArray *)objects forKeys:(NSArray *)keys;` | 使用指定的对象和键初始化字典 |
| `- (id)initWithContentsOfFile:(NSString *)path;` | 使用本地文件的内容初始化字典 |
| `- (id)initWithContentsOfURL:(NSURL *)url;` | 使用 URL 处的内容初始化字典 |
以下是创建字典的完整代码示例(`main.m`):
```objc
#import <Foundation/Foundation.h>
int main (int argc, const char * argv[])
{
@autoreleasepool {
NSDictionary *dictionary1 = [[NSDictionary alloc] init];
NSArray *listOfObjects = [NSArray arrayWithObjects:@"Hello World", @"Bonjour tout le monde", @"Hola Mundo", nil];
NSArray *listOfKeys = [NSArray arrayWithObjects:@"english", @"french", @"spanish", nil];
NSDictionary *dictionary2 = [NSDictionary dictionaryWithObjects:listOfObjects forKeys:listOfKeys];
NSLog(@"dictionary2 = %@", dictionary2);
}
return 0;
}
```
使用此代码时,在 Xcode 中构建并运行 Mac 应用程序。可以设置断点并使用 Xcode 调试器检查这些字典的内容。在日志中可以看到字典的完整内容:
```
dictionary2 = {
english = "Hello World";
french = "Bonjour tout le monde";
spanish = "Hola Mundo";
}
```
#### 2. 引用字典中的对象
如果想获取字典中对象的引用,以便访问其属性或向对象发送消息,可以使用 `objectForKey:` 方法。
`NSDictionary` 对象根据提供的键来组织对象列表,这使得查找任何感兴趣的对象变得非常容易和快速。只需使用 `objectForKey:` 并提供要查找的对象的键,即可获得所需的引用。
以下是示例代码:
```objc
NSString *helloWorld = [dictionary objectForKey:@"english"];
```
完整代码示例(`main.m`)如下:
```objc
#import <Foundation/Foundation.h>
int main (int argc, const char * argv[])
{
@autoreleasepool {
NSArray *listOfObjects = [NSArray arrayWithObjects:@"Hello World", @"Bonjour tout le monde", @"Hola Mundo", nil];
NSArray *listOfKeys = [NSArray arrayWi
```
0
0
复制全文
相关推荐










