OC_字典(可变不可变都有^_^)

本文详细介绍了Objective-C中的字典(NSDictionary和NSMutableDictionary)的概念、创建方法及操作技巧,包括键值对的添加、修改和遍历等。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

字典 NSDictionary

1.概念字典是关键字'key'及其定义的值(value)所构成的集合,即它是由key-value组成的键值对的集合。
  'key'一般是'NSString'类型的,‘value’是OC中任意对象。对于字典来讲,我们就是通过'key'来访问                     'value'。 
2.为什么在有了数组之后还需要字典?在有大量的数据或者频繁的查找的时候,使用字典效率更高。
   因为字典才用键查询的优化存储方式。

初始化


创建一个空的字典

NSDictionary *dictionary1 = [[NSDictionary alloc]init];
NSDictionary *dictionary2 = [NSDictionary dictionary];

创建一个只有一个键值对

NSDictionary *dictionary3 = [NSDictionary dictionaryWithObject:@"Leee" forKey:@"name"];

//创建一个只有多个键值对

NSDictionary *dictionary4 = [NSDictionary dictionaryWithObjectsAndKeys:@"Leee",@"name",@25,@"age",@"GZ",@"address", nil];

//字典里面存放的元素要都是对象类型才行。如果基本数据类型,要先把基本数据类型进行哦封装,然后放到这些集合中去。

NSDictionary *dictionary5 = [NSDictionary dictionaryWithDictionary:dictionary4];
    NSLog(@"%@",dictionary5);

//新语法创建字典

NSDictionary *dictionary6 = @{};

//新语法创建直邮一个键值对的语法

NSDictionary *dictionary7 = @{@"name":@"Leee"};

//新语法创建有多个键值对的字典

NSDictionary *dictionary8 = @{@"name":@"Leee",@"age":@22,@"address":@"GZ"};

//从本地和从网络(从网络要用NSURL URLWithString:)

NSDictionary *dictionary9 = [NSDictionary dictionaryWithContentsOfFile:@""];
NSDictionary *dictionary10 = [NSDictionary dictionaryWithContentsOfURL:[NSURL URLWithString:@""]];

字典中键值对的数量

NSUInterger count = dictionary.count;

如何访问字典
通过key访问字典中的值

NSString *name = [dictionary4 objectForKey:@"name"];

新语法

NSString *newName = dictionary4 [@"name"];

如何遍历字典中所有的key/value
表示字典里所有的Key

NSArray *keysArray = dictionary4.allKeys;
NSArray *valuesArray = [dictionary4.allValues];

使用for 循环来打印 key=value

for (int i =0;i <dictionary4.count;i++){NSLog(@"%@ = %@"),keysArray[i],valuesArray[i];
}

forin

for (NSString *key in keysArray){NSLog(@"%@=%@",key,dictionary4[key]);}

使用枚举器遍历

NSEnumerator *enumerator = [keysArray objectEnumerator];
id key
while (key =[enumerator nextObject]){NSLog(@
"%@ = %@",key,dictionary4[key]);}

NSDictionary *dictionary = @{@”name”:@”Leee”,@”age”:@”22”,@”address”:@”GZ”,@”name”,@”Jack”};
for(NSString *str in dictionary.allKeys){
NSLog(@”%@ = %@”,str,dictionary[str]);}


可变字典 NSMutableArray

创建一个空的字典

NSMutableDictionary *mDictionary1 = [NSMutableDictionary dictionary];

创建一个有一个键值对的可变字典

NSMutableDictionary *mDictionary2 = [NSMutableDicitionary dictionaryWithObject:@"Leee", forKey:@"name"];

创建一个有多个键值对的可变字典

NSMutableDiction *mDictionary3 = [NSMutableDictionary dictionaryWithObjectAndKeys:@"Leee",@"name",@25,@"age",@"GZ",@"address",nil];

通过另一个字典创建一个字典

NSMutableDictionary *mDictionary4 = [NSMutableDictionary dictionaryWithDictionary:mDictionary3];

可变字典独有的初始化方法

NSMutableDictionary *mDictionary5 = [NSMutableDictionary dictionaryWithCapacity:10];

操作字典

[mDictionary5 setValue:@"Leee" forKey:@"name"];
[mDictionary5 setValue:@25 forKey:@"name"];

改(如果原来的字典中已经有了akey这个键,那么这次新加的值就会覆盖原来关键(键)akey对应的值

[mDictionary5 setValue:@"sb" forKey:@"name"];

mDictionary5[@”name”] = @”Leo”;

删除指定key 的对象

[mDictionary5 removeObjectForkey:@"name"];
[mDicitonary5 removeAllObjects];

找出相同值的键

NSMutableDicitonary *mDic8 = [NSMutableDicitonary dictionaryWithObjectAndKeys:@"Leee",@"name1",@22,@"age",@"GZ",@"address",@"Leee",@"name2",@"Leee",@"name3",nil];
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值