objective-c字典
Objective-c字典
字典
1. Foundation中的字典(NSDictionary, NSMutableDictionary)是由键-值对组成的数据集合。正如,我们在字典里查找单词的定义一页。通过key键。查找对应value值,key是字符串对象,值可以是其他任意类型对象。在一个字典对象中。key必须是唯一的,此外,字典对象的键和值不可以为空nil,如果需要在一个字典对象中表示一个空值,可以使用NSNull对象
?为什么使用字典??为什么不使用数组?
数组的特征:他是按一定顺序曲排列的集合,通过下标曲存取值(当希望数据是按照一定的顺序曲排列的适合 选择使用数组)
字典特征:通过key存取值,(获取一个具体的标识 准确的得到咱们想要的值)
字典是通过key来存取值
key value 是成对出现的
字典的类名NSDictionary
初始化一个空字典
// NSDictionary *dictionary = [[NSDictionary alloc] init];
//// 初始化一个空典
// NSDictionary *dictionary1 = [NSDictionary dictionary];
//// 初始化的同时 添加一对键值
NSDictionary *dictionary2 = [NSDictionary dictionaryWithObject:@"value" forKey:@"key"];
// 初始化的同时添加多对键值
// 前面是值 可以是任意类型
// 后面是key 必须是字符串
NSDictionary *dictionary3 = [NSDictionary dictionaryWithObjectsAndKeys:@"object",@"key",@"object1",@"key1", @"object2",@"key2",nil];
// 字典的新方法
// 前面是key 后面是值 与之前的方法的键值相反
NSDictionary *dictionary4 = @{@"key":@"值",@"key1":@"值1"};
NSLog(@"%@",dictionary3);
NSLog(@"%@",dictionary4);
可变字典
可变字典:可以删除、替换(添加)
类名位NSMutableDictionary
不可以用这种方式初始化NSMutableDictionary *dictionary =@{@"key1":@"object1",@"key2":@"object2"};
NSMutableDictionary *dictionary = [NSMutableDictionary dictionary];//初始化了一个空字典
个人总结:
字典和数组的定义和赋值有很多相似的地方,可以一起记忆;如
数组 定义 NSArray *array = [[NSArray alloc] init];
定义 NSArray *array = [NSArray array];
定义并赋一个值 NSArray *array = [NSArray arrayWithObject:@“”];
定义并赋多个值
NSArray *array = [NSArray arrayWithObjects:@"",@"", nil];
一种新方法,既可以赋多个值也可以赋一个值
NSArray *array = @[@“",@""];
字典 定义NSDictionary *dictionary = [[NSDictionary alloc] init];
定义 NSDictionary *dictionary1 = [NSDictionary dictionary];
定义并赋一个键和值 NSDictionary *dictionary2 = [NSDictionary dictionaryWithObject:@"value" forKey:@“key”];
定义并赋多个键和值 NSDictionary *dictionary3 = [NSDictionary dictionaryWithObjectsAndKeys:@"object",@"key",@"object1",@"key1", @“object2",@"key2",nil];
而在取值时有一点区别
数组取值 是数组名跟数组下标,如:array[0];但是不能越界,即不能超过array.count;array.count为数组长度;
而字典取值则是用函数 objectForKey:@“键”;
也可以用 dictionary[@“键”];
还有一个区别是:打印输出的时候字典是{值;值1;值2;值3},数组是(值,值1,值2,值3)或[值,值1,值2,值3]