Swift基础语法-字典--对比OC


1. 定义字典

//OC:
NSDictionary *dict =[NSDictionary dictionaryWithObject:@"CDH" forKey:@"name"];
NSLog(@"%@", dict);
//输出结果:
//2016-01-06 15:09:11.214 OCTest[3773:761032] {
//    name = CDH;
//}

NSDictionary *dict =[NSDictionary dictionaryWithObjectsAndKeys:@"name", @"CDH",
                                                               @"age", @20, nil];
NSLog(@"%@", dict);
//输出结果:
//2016-01-06 15:13:39.853 OCTest[3831:792730] {
//    CDH = name;
//    20 = age;
//}

NSDictionary *dict = @{@"name":@"CDH", @"age":@20};
NSLog(@"%@", dict);
//输出结果:
//2016-01-06 15:14:57.616 OCTest[3841:801710] {
//    age = 20;
//    name = CDH;
//}
//swift:
//key一定要是可以hash的(String, Int, Float, Double, Bool)
//value没有要求
var dict = ["name":"CDH", "age":20]
print(dict)

var dict1:Dictionary = ["name":"CDH", "age":20]
print(dict1)

var dict2:Dictionary<String,AnyObject> = ["name":"CDH", "age":20]
print(dict2)

var dict3:[String:AnyObject] = ["name":"CDH", "age":20]
print(dict3)

var dict4:[String:AnyObject] =
    Dictionary(dictionaryLiteral: ("name", "CDH"), ("age", 20))
print(dict4)
//输出结果:
//["age": 20, "name": CDH]
//["age": 20, "name": CDH]
//["age": 20, "name": CDH]
//["age": 20, "name": CDH]
//["age": 20, "name": CDH]
//可变字典:
var dict5 = [:]
//不可变字典:
let dict6  = [:]

2. 字典操作

  • 获取
//OC获取
NSDictionary *dict = @{@"name":@"CDH", @"age":@20};
NSLog(@"%@", dict[@"name"]);
//输出结果:
//2016-01-06 15:26:00.351 OCTest[3923:881138] CDH
//Swift获取
var dict7 = ["name":"CDH", "age":20]
print(dict7["name"]!)
//输出结果: CDH
  • 修改
//OC修改
NSMutableDictionary *dict =
[NSMutableDictionary dictionaryWithObjectsAndKeys:
                                                    @"name", @"CDH",
                                                    @"age", @20, nil];
dict[@"name"] = @"iversion";
NSLog(@"%@", dict[@"name"]);

NSMutableDictionary *dict =
[NSMutableDictionary dictionaryWithObjectsAndKeys:
                                                    @"name", @"CDH",
                                                    @"age", @20, nil];
[dict setObject:@"iversion" forKey:@"name"];
NSLog(@"%@", dict[@"name"]);

//输出结果:
//2016-01-06 15:27:01.704 OCTest[3933:890317] iversion
//2016-01-06 15:28:21.398 OCTest[3943:899613] iversion
//swift修改
var dict8 = ["name":"CDH", "age":20]
dict8["name"] = "iverson"
print(dict8["name"]!)
//输出结果:
//iverson

var dict9 = ["name":"CDH", "age":20]
dict9.updateValue("iverson", forKey: "name")
print(dict9["name"]!)
//输出结果:
//iverson
//swift更新
//updateValue返回一个可选类型
//如果字典中不存在需要更新的key, 那么返回nil, 如果存在返回原始值
var dict10 = ["name":"CDH", "age":25]
if let orignal = dict10.updateValue("iverson", forKey: "name"){
    print(dict10["name"]!)
    print(orignal)
}
//输出结果:
//iverson
//CDH

//updateValue返回一个可选类型
//如果字典中不存在需要更新的key, 那么返回nil并且会将新的键值对添加到字典中
var dict11 = ["name":"CDH", "age":25]
if let orignal = dict11.updateValue("iverson", forKey: "abc")
{
    print(dict11["abc"]!)
    print(orignal)
}
print(dict)
//输出结果: ["abc": iverson, "age": 25, "name": CDH]
  • 添加
//OC:往字典中添加键值对
NSMutableDictionary *dict =
[NSMutableDictionary dictionaryWithObjectsAndKeys:
                                                    @"name", @"CDH",
                                                    @"age", @25, nil];
dict[@"height"] = @100;
NSLog(@"%@", dict);
//输出结果:
//2016-01-06 15:35:11.734 OCTest[4025:946250] {
//    CDH = name;
//    25 = age;
//    height = 100;
//}

NSMutableDictionary *dict =
    [NSMutableDictionary dictionaryWithObjectsAndKeys:
                                                        @"name", @"CDH",
                                                        @"age", @30, nil];
[dict setObject:@200 forKey:@"height"];
NSLog(@"%@", dict);
//输出结果:
//2016-01-06 15:36:15.768 OCTest[4035:953931] {
//    CDH = name;
//    30 = age;
//    height = 200;
//}
//swift:
var dict12 = ["name":"CDH", "age":50]
dict12["height"] = 160;
print(dict12)
//输出结果: ["height": 160, "age": 50, "name": CDH]
  • 删除
//OC:
NSMutableDictionary *dict =
[NSMutableDictionary dictionaryWithObjectsAndKeys:
                                                    @"CDH",@"name",
                                                    @30,@"age",nil];
[dict removeObjectForKey:@"name"];
NSLog(@"%@", dict);
//输出结果:
//2016-01-06 15:40:37.801 OCTest[4058:981747] {
//    age = 30;
//}

NSMutableDictionary *dict =
    [NSMutableDictionary dictionaryWithObjectsAndKeys:
                                                        @"CDH",@"name",
                                                        @30,@"age",nil];
[dict removeAllObjects];
NSLog(@"%@", dict);
//输出结果:
//2016-01-06 15:41:20.705 OCTest[4068:989096] {
//}
//swift:
var dict13 = ["name":"CDH", "age":10]
dict13.removeValueForKey("name")
print(dict13)
//输出结果: ["age": 10]

//removeValueForKey返回一个可选类型
//如果字典中不存在需要删除的key, 那么返回nil并且不会执行任何操作
//如果存在则删除key对应的值, 并且返回被删除的值
var dict14 = ["name":"CDH", "age":20]
if let orignal = dict14.removeValueForKey("names"){
    print(dict14)
    print(orignal)
}
print(dict)
//输出结果:["age": 30, "name": CDH]

var dict15 = ["name":"CDH", "age":30]
dict15.removeAll(keepCapacity: true)
  • 遍历字典
//OC:
NSMutableDictionary *dict =
[NSMutableDictionary dictionaryWithObjectsAndKeys:@"CDH",@"name",
                                                  @40,@"age",nil];
[dictenumerateKeysAndObjectsUsingBlock:^(idkey,idobj,BOOL*stop) {
NSLog(@"key = %@ value = %@", key, obj);
}];
//输出结果:
//2016-01-06 15:45:59.810 OCTest[4117:1022823] key = name value = CDH
//2016-01-06 15:45:59.811 OCTest[4117:1022823] key = age value = 40

NSMutableDictionary *dict =
[NSMutableDictionary dictionaryWithObjectsAndKeys:@"CDH", @"name",
                                                  @40, @"age", nil];
NSArray *keys = [dict allKeys];
for (NSString *key in keys) {
    NSLog(@"%@", key);
}
//输出结果:
//2016-01-06 15:48:07.861 OCTest[4137:1039198] name
//2016-01-06 15:48:07.862 OCTest[4137:1039198] age

NSMutableDictionary *dict =
[NSMutableDictionary dictionaryWithObjectsAndKeys:@"CDH", @"name",
                                                  @40, @"age", nil];
NSArray *keys = [dict allValues];
for (NSString *key in keys) {
    NSLog(@"%@", key);
}
//输出结果:
//2016-01-06 15:49:20.375 OCTest[4148:1049548] CDH
//2016-01-06 15:49:20.376 OCTest[4148:1049548] 40
// swift
var dict16 = ["name":"CDH", "age":30]
for (key , value) in dict16{
    print("key = \(key) value = \(value)")
}
//输出结果:
//key = age value = 30
//key = name value = CDH

var dict17 = ["name":"CDH", "age":40]
for key in dict17.keys{
    print("key = \(key)")
}
//输出结果:
//key = age
//key = name

var dict18 = ["name":"CDH", "age":50]
for value in dict18.values{
    print("value = \(value)")
}
//输出结果:
//value = 50
//value = CDH
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 218,284评论 6 506
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 93,115评论 3 395
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 164,614评论 0 354
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,671评论 1 293
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,699评论 6 392
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,562评论 1 305
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,309评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,223评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,668评论 1 314
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,859评论 3 336
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,981评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,705评论 5 347
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,310评论 3 330
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,904评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,023评论 1 270
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,146评论 3 370
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,933评论 2 355

推荐阅读更多精彩内容