// 空可變字典
NSMutableDictionary *dict = [NSMutableDictionary dictionary];
// 預留容量(優化性能)
NSMutableDictionary *dict2 = [NSMutableDictionary dictionaryWithCapacity:10];
// 字面量語法(不可變,需 copy)
NSDictionary *immutable = @{@"key": @"value"};
NSMutableDictionary *dict3 = [immutable mutableCopy];
// 增/改:key 存在則覆蓋,不存在則新增 [dict setObject:@"value1" forKey:@"key1"]; // 刪除指定鍵 [dict removeObjectForKey:@"key1"]; // 清空 [dict removeAllObjects]; // 查詢 id value = [dict objectForKey:@"key1"]; // 或 dict[@"key1"] // 判斷存在性 BOOL exists = [dict objectForKey:@"key1"] != nil; // 獲取所有鍵/值 NSArray *keys = [dict allKeys]; NSArray *values = [dict allValues];
// 快速枚舉(推薦,效率高)
for (NSString *key in dict) {
NSLog(@"%@ -> %@", key, dict[key]);
}
// 傳統索引遍歷
NSArray *keys = [dict allKeys];
for (NSUInteger i = 0; i < keys.count; ++i) {
NSString *key = keys[i];
NSLog(@"%@ -> %@", key, dict[key]);
}
dictionary 類方法返回自動釋放對象(ARC 下無需手動釋放)。alloc/init 需配對 release(MRC 時代)。NSCopying 協議(通常用 NSString)。int main() {
@autoreleasepool {
NSMutableDictionary *dic = [NSMutableDictionary dictionary];
[dic setObject:@"Apple" forKey:@"fruit"];
[dic setObject:@"Carrot" forKey:@"vegetable"];
NSLog(@"初始: %@", dic);
[dic removeObjectForKey:@"fruit"];
NSLog(@"刪除後: %@", dic);
for (NSString *key in dic) {
NSLog(@"%@: %@", key, dic[key]);
}
}
return 0;
}
NSMutableDictionary 是鍵值存儲的核心工具,掌握 字面量創建、KVC 存取、快速枚舉、內存語義 四大要點,即可高效應對日常開發場景。