NSDictionary及NSMutableDictionary

NSDictionary

1:什么是字典?

OC中的NSDictionary:根据key找到value,字典中存储的东西都是键值对

2:如何创建字典?

方法一:

NSDictionary *dict = [NSDictionary dictionaryWithObject:@"lnj" forKey:@"name"];
//根据key获取value
NSString *name = [dict objectForKey:@"name"];
NSLog(@"name = %@", name);

方法二:

/

/ 注意: key和value 是一一对应
NSDictionary *dict = [NSDictionary dictionaryWithObjects:@[@"lnj", @"30", @"1.75"] forKeys:@[@"name", @"age", @"height"]];
NSLog(@"%@ %@ %@", [dict objectForKey:@"name"], [dict objectForKey:@"age"], [dict objectForKey:@"height"]);

方法三:"简写:

NSDictionary *dict = @{key:value};
NSDictionary *dict = @{@"name": @"lnj"};
NSLog(@"%@", dict[@"name"]);

NSDictionary *dict = @{@"name":@"lnj", @"age":@"30", @"height":@"1.75"};
NSLog(@"%@ %@ %@", dict[@"name"], dict[@"age"], dict[@"height"]);

3:如何对字典进行遍历?

NSDictionary *dict = @{@"name":@"lnj", @"age":@"30", @"height":@"1.75"};

//获取字典中key和value的个数, 在字典中key称之为键, value称之为值
NSLog(@"count = %lu", [dict count]);

方法一:老式for循环写法

for (int i = 0; i < dict.count; ++i) {
    // 获取字典中所有的key
    NSArray *keys = [dict allKeys];
    // 取出当前位置对应的key
    //        NSLog(@"%@", keys[i]);
    NSString *key = keys[i];
    NSString *value = dict[key];
    NSLog(@"key = %@, value = %@", key, value);
}

方法二:增强for循环写法

// 如何通过forin遍历字典, 会将所有的key赋值给前面的obj
for (NSString *key in dict) {
    //        NSLog(@"%@", key);
    NSString *value = dict[key];
    NSLog(@"key = %@, value = %@", key, value);

}

方法三:OC字典的迭代器来遍历

[dict enumerateKeysAndObjectsUsingBlock:^(id key, id obj, BOOL *stop) {
    NSLog(@"key = %@, value = %@", key, obj);
}];

4:如何对字典文件进行读写?

1.将字典数据写入文件中

NSDictionary *dict = @{@"name":@"lnj", @"age":@"30", @"height":@"1.75"};

[dict writeToFile:@"/Users/xiaomage/Desktop/info.plist" atomically:YES];

2.从文件中读取字典数据

  • 注意: 字典和数组不同, 字典中保存的数据是无序的
NSDictionary *newDict = [NSDictionary dictionaryWithContentsOfFile:@"/Users/xiaomage/Desktop/info.plist"];
NSLog(@"%@", newDict);

NSArray *arr = @[@10, @20, @30, @5];
[arr writeToFile:@"/Users/xiaomage/Desktop/abc.plist" atomically:YES];

9.NSMutableDictionary

如何对可变字典进行增删改查

1:如何创建一个空的可变字典?

NSMutableDictionary *dictM = [NSMutableDictionary dictionary];

2:如何给可变字典添加键值对?

[dictM setObject:@"lnj" forKey:@"name"];

//简写:
dictM[@"name"] = @"lnj";

// 会将传入字典中所有的键值对取出来添加到dictM中
[dictM setValuesForKeysWithDictionary:@{@"age":@"30", @"height":@"1.75"}];

3:如何根据键,获取可变字典的值?

NSLog(@"name = %@", dictM[@"name"]);

4:如何删除可变字典键值对?

[dictM removeObjectForKey:@"name"];
[dictM removeObjectsForKeys:@[@"age", @"height"]];

5:如何修改可变字典中的键值对?

  • 利用setObject方法给同名的key赋值,
    那么新值会覆盖旧值
[dictM setObject:@"88" forKey:@"age"];
//简写:
dictM[@"age"] = @"88";

6:使用可变字典有什么注意事项?

1.不能使用@{}来创建一个可变的字典

    NSMutableDictionary *dictM = @{@"name":@"lnj"};//编译就会报错
    [dictM setObject:@"30" forKey:@"age"];

2.

  • 如果是不可变字典, 那么key不能相同
  • 如果是不可变字典出现了同名的key,
    那么后面的key对应的值不会被保存
  • 如果是在可变数组中, 后面的会覆盖前面的
NSDictionary *dict = @{@"name":@"lmj", @"name":@"lnj"};
NSLog(@"dict = %@", dict);

NSMutableDictionary *dictM = [NSMutableDictionary dictionaryWithObjects:@[@"lmj", @"lnj"] forKeys:@[@"name", @"name"]];
NSLog(@"dict = %@", dictM);
时间: 2024-08-07 08:38:00

NSDictionary及NSMutableDictionary的相关文章

[Objective-C] 009_Foundation框架之NSDictionary与NSMutableDictionary

在Cocoa Foundation中NSDictionary和NSMutableDictionary 用于对象有序集合,NSDictionary和NSMutableDictionary 与 NSArray和NSMutableArray 有些不一样,前者可以保存多个不同类型的数据,而后者只能保存同一类型的数据. 1.NSDictionary 创建 NSDictionary *dictionary = [NSDictionary dictionaryWithObjectsAndKeys:@"Supe

【转】目前最细致清晰的NSDictionary以及NSMutableDictionary用法总结 -- 不错

原文网址:http://www.cnblogs.com/wengzilin/archive/2012/03/15/2397712.html 做过Java语言 或者 C语言 开发的朋友应该很清楚 关键字map 吧,它可以将数据以键值对儿的形式储存起来,取值的时候通过KEY就可以直接拿到对应的值,非常方便.在Objective-C语言中 词典对象就是做这个事情的,不过在同一个词典对象中可以保存多个不同类型的数据,不像Java与C 只能保存声明的相同类型的数据,它的关键字为NSDictionary与N

字典NSDictionary以及NSMutableDictionary的用法总结

做过Java语言 或者 C语言 开发的朋友应该很清楚 关键字map 吧,它可以将数据以键值对儿的形式储存起来,取值的时候通过KEY就可以直接拿到对应的值,非常方便.在Objective-C语言中 词典对象就是做这个事情的,不过在同一个词典对象中可以保存多个不同类型的数据,不像Java与C 只能保存声明的相同类型的数据,它的关键字为NSDictionary与NSMutableDictionary.阅读过我之前文章的朋友应该从关键字的 结构就可以看出这两个的区别.很明显前者为不可变词典,或者为可变词

IOS Intro - NSDictionary and NSMutableDictionary

NSDictionary.NSMutableDictionary的基本用法 1.不可变词典NSDictionary 字典初始化 NSNumber *numObj = [NSNumber numberWithInt:100]; 以一个元素初始化 NSDictionary *dic = [NSDictionary dictionaryWithObject:numObj forKey:@"key"]; 初始化两个元素 NSDictionary *dic = [NSDictionary dic

目前最细致清晰的NSDictionary以及NSMutableDictionary用法总结(转)

做过Java语言 或者 C语言 开发的朋友应该很清楚 关键字map 吧,它可以将数据以键值对儿的形式储存起来,取值的时候通过KEY就可以直接拿到对应的值,非常方便.在Objective-C语言中 词典对象就是做这个事情的,不过在同一个词典对象中可以保存多个不同类型的数据,不像Java与C 只能保存声明的相同类型的数据,它的关键字为NSDictionary与NSMutableDictionary.阅读过我之前文章的朋友应该从关键字的 结构就可以看出这两个的区别.很明显前者为不可变词典,或者为可变词

【转】NSDictionary和NSMutableDictionary用法详解

做过Java语言 或者 C语言 开发的朋友应该很清楚 关键字map 吧,它可以将数据以键值对儿的形式储存起来,取值的时候通过KEY就可以直接拿到对应的值,非常方便.在Objective-C语言中 词典对象就是做这个事情的,不过在同一个词典对象中可以保存多个不同类型的数据,不像Java与C 只能保存声明的相同类型的数据,它的关键字为NSDictionary与NSMutableDictionary.阅读过我之前文章的朋友应该从关键字的 结构就可以看出这两个的区别.很明显前者为不可变词典,或者为可变词

Objective-C数组 NSArray与NSMutableArray的区别 NSDictionary与 NSMutableDictionary 的区别 == int,NSInteger,NSUIn

Objective-C数组相关操作. // insert code here... NSLog(@"数组"); //指定多个字符串创建数组 NSArray *array; array=[NSArrayarrayWithObjects:@"0-asd",@"1-fds",@"2-哈咯",@"3-个人",nil]; //数组的长度 NSLog(@"数组长度%d",array.count);

NSDictionary以及NSMutableDictionary创建及其常用方法总结

类似于Java语言关键字map 吧,它可以将数据以键值对儿的形式储存起来,取值的时候通过KEY就可以直接拿到对应的值,非常方便.在Objective-C语言中 词典对象就是做这个事情的,不过在同一个词典对象中可以保存多个不同类型的数据,不像Java只能保存声明的相同类型的数据,它的关键字为NSDictionary与NSMutableDictionary.前者为不可变词典,或者为可变词典. NSDictionary *dict; for(NSString * akey in dict) { //.

IOS开发之旅-IOS常用数据结构NSArray、NSMutableArray、NSDictionary、NSMutableDictionary介绍

NSArray NSArray基本用法 void arrayTest1() { //数组初始化最后必须以nil结尾,表示数组元素结束 NSArray *array1 = [[NSArray alloc]initWithObjects:@"item0",@"item1",@"item2",@"item3",@"item4",nil]; NSLog(@"%@",array1); /*( it

【转】NSDictionary以及NSMutableDictionary的用法

原文网址:http://my.oschina.net/u/1245365/blog/177736 摘要 Foundation中的字典是由 键—值 对组成的数据集合.通过key(键),查找对应的value(值),key通常是字符串对象,也可以是其他任意的对象,但key的值必须是唯一的.此外,字典对象的key 和value的值不可以为空(nil),如果要表示一个空值,可以用NSNull对象 1.NSDictionary (不可变字典) 字典的初始化 //一个key - value NSDiction