十五 Swift5.0之 字典

全系列导航:Swift5.0 系列博客索引


/*
字典定义: 键值对
OC:
NSDictionary *dict = [NSDictionary dictionaryWithObject:@"gezi" forKey:@"name"];
NSLog(@"%@", dict);

NSDictionary *dict = [NSDictionary dictionaryWithObjectsAndKeys:@"name", @"gezi", @"age", @30, nil];
NSLog(@"%@", dict);

NSDictionary *dict = @{@"name":@"gezi", @"age":@30};
NSLog(@"%@", dict);
*/

// key一定要是可以hash的(String, Int, Float, Double, Bool), value没有要求
var dict = ["name":"gezi", "age":30] as [String : Any]
print(dict)

var dict1:Dictionary = ["name":"gezi", "age":30] as [String : Any]
print(dict1)

var dict2:Dictionary<String,Any> = ["name":"gezi", "age":30]
print(dict2)

var dict3:[String:Any] = ["name":"gezi", "age":30]
print(dict3)

var dict4:[String:Any] = Dictionary(dictionaryLiteral: ("name", "gezi"), ("age", 30))
print(dict4)

//可变字典:
var dict5 = [String:AnyObject]()
//不可变字典:
let dict6  = [String:AnyObject]()

/*
字典操作
OC:
1.获取
NSDictionary *dict = @{@"name":@"gezi", @"age":@30};
NSLog(@"%@", dict[@"name"]);

2.修改
NSMutableDictionary *dict = [NSMutableDictionary dictionaryWithObjectsAndKeys:@"name", @"gezi", @"age", @30, nil];
dict[@"name"] = @"iversion";
NSLog(@"%@", dict[@"name"]);

NSMutableDictionary *dict = [NSMutableDictionary dictionaryWithObjectsAndKeys:@"name", @"gezi", @"age", @30, nil];
[dict setObject:@"iversion" forKey:@"name"];
NSLog(@"%@", dict[@"name"]);
*/
//1.获取
var dict7 = ["name":"gezi", "age":30] as [String : Any]
print(dict7["name"]!)

//2.修改
var dict8 = ["name":"gezi", "age":30] as [String : Any]
dict8["name"] = "iverson"
print(dict8["name"]!)

var dict9 = ["name":"gezi", "age":30] as [String : Any]
dict9.updateValue("iverson", forKey: "name")
print(dict9["name"]!)


// 3.更新
// updateValue返回一个可选类型, 如果字典中不存在需要更新的key, 那么返回nil, 如果存在返回原始值
var dict10 = ["name":"gezi", "age":30] as [String : Any]
if let orignal = dict10.updateValue("iverson", forKey: "name")
{
    print(dict10["name"]!)
    print(orignal)
}

// updateValue返回一个可选类型, 如果字典中不存在需要更新的key, 那么返回nil并且会将新的键值对添加到字典中
var dict11 = ["name":"gezi", "age":30] as [String : Any]
if let orignal = dict11.updateValue("iverson", forKey: "abc")
{
    print(dict11["abc"]!)
    print(orignal)
}
print(dict11)


/*
4.添加
OC:
NSMutableDictionary *dict = [NSMutableDictionary dictionaryWithObjectsAndKeys:@"name", @"gezi", @"age", @30, nil];
dict[@"height"] = @175;
NSLog(@"%@", dict);


NSMutableDictionary *dict = [NSMutableDictionary dictionaryWithObjectsAndKeys:@"name", @"gezi", @"age", @30, nil];
[dict setObject:@175 forKey:@"height"];
NSLog(@"%@", dict);
*/

var dict12 = ["name":"gezi", "age":30] as [String : Any]
dict12["height"] = 175;
print(dict12)


/*
5.删除
OC:
NSMutableDictionary *dict = [NSMutableDictionary dictionaryWithObjectsAndKeys:@"gezi", @"name", @30, @"age", nil];
[dict removeObjectForKey:@"name"];
NSLog(@"%@", dict);

NSMutableDictionary *dict = [NSMutableDictionary dictionaryWithObjectsAndKeys:@"gezi", @"name", @30, @"age", nil];
[dict removeAllObjects];
NSLog(@"%@", dict);
*/
var dict13 = ["name":"gezi", "age":30] as [String : Any]
dict13.removeValue(forKey: "name")
print(dict13)


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

var dict15 = ["name":"gezi", "age":30] as [String : Any]
dict15.removeAll(keepingCapacity: true)



/*
遍历字典
OC:
NSMutableDictionary *dict = [NSMutableDictionary dictionaryWithObjectsAndKeys:@"gezi", @"name", @30, @"age", nil];
[dict enumerateKeysAndObjectsUsingBlock:^(id key, id obj, BOOL *stop) {
NSLog(@"key = %@ value = %@", key, obj);
}];

NSMutableDictionary *dict = [NSMutableDictionary dictionaryWithObjectsAndKeys:@"gezi", @"name", @30, @"age", nil];
NSArray *keys = [dict allKeys];
for (NSString *key in keys) {
NSLog(@"%@", key);
}

NSMutableDictionary *dict = [NSMutableDictionary dictionaryWithObjectsAndKeys:@"gezi", @"name", @30, @"age", nil];
NSArray *values = [dict allValues];
for (NSString *value in values) {
NSLog(@"%@", value);
}
*/

var dict16 = ["name":"gezi", "age":30] as [String : Any]
for (key , value) in dict16
{
    print("key = \(key) value = \(value)")
}

var dict17 = ["name":"gezi", "age":30] as [String : Any]
for key in dict17.keys
{
    print("key = \(key)")
}

var dict18 = ["name":"gezi", "age":30] as [String : Any]
for value in dict18.values
{
    print("value = \(value)")
}

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值