swift_005(Swift的Dictionary 字典)
1.Dictionary (可变不可变不区分了)字典 《Swift开发指南》
// Swift 字典的key没有类型限制可以是整型或字符串,但必须是唯一的。
var someDict:[Int:String] = [1:"One", 2:"Two", 3:"Three"]
//(1)创建一个字典
var dic:Dictionary<String,String>=["三国演义":"罗贯中","水浒传":"施耐庵","红楼梦":"曹雪芹"];
//(2)向字典中添加键值 "西记":"吴承恩"
dic["吴承恩”]="西记"
//(3)修改
dic.updateValue("西游记",forKey:"吴承恩")
//(4)删除
dic.removeValueForKey("吴承恩")
//(5)遍历 for in 字典 会以元组(键,值)的形式返回
for (key,value) in dic {
print("键:\(key) 值:\(value)");
}
// 元组
for tuples in dic {
print("键:\(tuples.0) 值:\(tuples.1)");
}
for key in dic.keys
{
print("key=:\(key)");
}
for value in dic.values
{
print("value=:\(value)");
}
//(6)通过构造方法创建字典
var namesOfIntegers = Dictionary<String, String>()
namesOfIntegers = dic
print("\(namesOfIntegers)")
/*******************字典的基本使用**************************/
// Swift 字典的key没有类型限制可以是整型或字符串,但必须是唯一的。
var someDict:[Int:String] = [1:"One", 2:"Two", 3:"Three"]
var removedValue = someDict.removeValue(forKey: 2)
print( "key = 1 的值为 \(someDict[1]!)" )
print( "key = 2 的值为 \(someDict[2])" )
print( "key = 3 的值为 \(someDict[3])" )
let testMutable:Bool = false
if !testMutable {
// 可变字典的基本使用
let mutable : NSMutableDictionary = NSMutableDictionary()
// add objects
mutable.setObject("Tom", forKey: "tom@jones.com" as NSCopying)
mutable.setObject("Bob", forKey: "bob@dole.com" as NSCopying)
mutable["lucy@163.com"] = "Lucy"
print("可变字典-----%@", mutable.description)
let keys = mutable.allKeys
for item : Any in keys {
let key = item as! String
print("%@ - %@", key, mutable.object(forKey: key) as! NSString)
}
}else {
// 不变字典的基本使用
let keyString : String = "one two three four five"
let keys : Array = keyString.components(separatedBy: " ")
let valuestring : String = "alpha bravo charlie delta echo"
let values : Array = valuestring.components(separatedBy: " ")
let dict : NSDictionary = NSDictionary(objects: values as [AnyObject], forKeys:keys as [NSCopying] )
print("******dict********\(dict)")
let value:NSString = dict.object(forKey: "three") as! NSString
NSLog("three = %@", value)
let dict1 : NSDictionary = NSDictionary.init(object: values, forKey: keys as NSCopying)
print("*******dict1*******\(dict1)")
let keys1 = dict.allKeys
for item : Any in keys1 {
let key = item as! NSString
print("%@ - %@", key, dict.object(forKey: key) as! NSString)
}
}
/******************Dictionary*************/
var submitDic:Dictionary<String,String>=["userName":"muyu07","password":"123456"]
submitDic.updateValue("MUYU07", forKey: "userName")
submitDic["inviteCode"] = "CJ10001"
print(submitDic)
// 三、NSDictionary与Dictionary之间的关系
// NSDictionary与Dictionary之间的关系如同NSArray与Array之间的关系,Swift在底层能够将它们自动地桥接起来,一个NSDictionary对象桥接之后的结果是[NSObject : AnyObject]字典(值为NSObject 类型,键为AnyObject 类型的Dictionary字典)。
let keyString1 : NSString = "one two three four five"
let keys1 : Array = keyString1.components(separatedBy: " ")
let valueString1 : NSString = "alpha bravo charlie delta echo"
let values1 : Array = valueString1.components(separatedBy: " ")
let foundationDict:NSDictionary = NSDictionary(objects:values1 as [AnyObject],forKeys:
keys1 as [NSCopying])
let swiftDict:Dictionary = foundationDict as Dictionary
print("swiftDict.description-----\(swiftDict.description)")
let keys3 = swiftDict.keys
for item : AnyObject in keys3 {
let key = item as! NSString
print("key:%@ --value:%@",key,swiftDict[key]);
}
var hues = ["Heliotrope": 296, "Coral": 16, "Aquamarine": 156]
print(hues["Coral"])
// Prints "Optional(16)"
print(hues["Cerise"])
//************** 概 览 **************
let swiftDict001 :Dictionary<String,String>= ["key1":"value1","key2":"value2"]
let nsDict001 :NSDictionary = swiftDict001 as NSDictionary
nsDict001.allKeys //["key1", "key2"]
nsDict001.allKeys(for: "value1") //["key1"]
nsDict001.allValues //["value1", "value2"]
//NSDictionary转换为Dictionary后,在输出时需要指定成员类型为AnyObject类型--不指定,Swift也能识别
let swiftDict002 = nsDict001 as Dictionary
for (key2, value2)in swiftDict002 {
print("\(key2):\(value2)")
}
for (key, value)in swiftDict002 {
print("\(key):\(value)")
}
//========== NSDictionary初始化 ==========
let nsDict003 = NSDictionary(object:"value1", forKey:001 as NSCopying)
let nsDict004 = NSDictionary(objects: ["value1","value2"], forKeys: [001 as NSCopying,002 as NSCopying])//一次性创建多个
let swiftDict003 = ["A":"value1","C":"value3","B":"value2"]
let nsDict005 = NSDictionary(dictionary:swiftDict003)
//========== NSDictionary常用的属性和方法 ==========
//获得成员个数
swiftDict002.count
nsDict001.count
//获取Key或Value组成的数组(swift Dictionary无此方法)
nsDict001.allKeys
nsDict001.allValues
//使用keysSortedByValueUsingComparator方法将key排序,获得新数组(swiftDictionary无此方法)
let sortKeys = nsDict005.keysSortedByValue(comparator: {($0 as! String).compare($1 as! String)})
print("\(sortKeys)") //[A, B, C]---由小到大排序
//获得单一键值(swift Dictionary无此方法)
nsDict005.object(forKey: "A")! //"value1"
nsDict005["A"]! //"value1"
swiftDict003["A"]
//获得多个键值(swift Dictionary无此方法)
nsDict005.objects(forKeys: ["A","D","B"],notFoundMarker:"NotFound") //["value1","NotFound", "value2"]
swiftDict003["A"]
swift_005(Swift的Dictionary 字典)相关推荐
- List数组,string数组,Dictionary字典三种contain方法的查询速度
在生成随机不重复数时要判断生成的数是否已生成过,这时就要和原来生成的数进行比较是否有重复,有以下三种方法 1. list数组采用contains()方法 2.string数组采用contains()方 ...
- C#中的Dictionary字典类介绍
关键字:C# Dictionary 字典 作者:txw1958 原文:http://www.cnblogs.com/txw1958/archive/2012/11/07/csharp-diction ...
- boost::contract模块实现dictionary字典的测试程序
boost::contract模块实现dictionary字典的测试程序 实现功能 C++实现代码 实现功能 boost::contract模块实现dictionary字典的测试程序 C++实现代码 ...
- 关于Dictionary字典和List列表
命名空间System.Collections.Generic中有两个非常重要,而且常用的泛型集合类,它们分别是Dictionary<TKey,TValue>字典和List<T> ...
- Swift之深入分析字典的下标访问方法的源码调试和汇编实现
一.字典的内存布局 Swift 中字典具有以下特点: 字典由两种范型类型组成,分别是 Key(必须实现 Hashable 协议)和 Value: 提供一组 Key 和 Value,可以向字典中插入一条 ...
- C#中的Dictionary字典类介绍(转载)
C#中的Dictionary字典类介绍 关键字:C# Dictionary 字典 作者:txw1958 原文:http://www.cnblogs.com/txw1958/archive/2012/ ...
- (转)C#中的Dictionary字典类介绍
关键字:C# Dictionary 字典 作者:txw1958 原文:http://www.cnblogs.com/txw1958/archive/2012/11/07/csharp-diction ...
- 你能熟练使用Dictionary字典和List列表吗?
命名空间System.Collections.Generic中有两个非常重要,而且常用的泛型集合类,它们分别是Dictionary<TKey,TValue>字典和List<T> ...
- Swift语法学习--字典
Swift语法学习--字典 字典基础 字典排序 字典过滤&映射 字典基础 字典排序 字典过滤&映射
最新文章
- [网络安全自学篇] 十八.XSS跨站脚本攻击原理及代码攻防演示(一)
- 最长不重复子串python_python经典算法题:无重复字符的最长子串
- linux 日志行数,如何实时查看日志文件新增的行数
- mybatis中concat的用法
- python调用大漠插件、检测么_Python调用大漠插件
- 月薪过万的前端工程师的自我修养
- PLC网关 PLC远程控制调试
- 电脑定时执行的软件 - 定时执行专家
- 统信UOS应用商店十月活动
- 一点接入全网互通,企业上云就用它!
- 医院科室管理系统(IDEA开发)
- 修改openwrt或者LEDE默认wifi名称以及默认开启wifi
- 今天那个服务器有无限火力,无限火力即将登陆,测试服已出,这次的无限火力有什么不一样?...
- iOS开发中拉伸图片的几种方式
- 位图(BMP)文件格式(一)
- uploader上传
- 山下英子与家政学员亲密接触 深度解读断舍离生活美学
- 模仿猫眼电影网站的html代码,猫眼电影仿照效果
- 待业五年后的找工作经历
- 三种方法:写一个函数,每调用一次函数,就会将num的值增加1,&&可能遇到的问题
热门文章
- 禁止显示“You have new mail in /var/spool/mail/root”
- targetSdkVersion
- IT顾问成长分享沙龙
- 笔记:写Java程序,并输出
- 编译原理-First集和Follow集
- 内存存储器和外存储器的异同
- 模板 - 数学 - 数论 - 莫比乌斯反演 - 2
- mvc学习-编辑提交需要注意-mvc重点
- nginx 502错误 upstream sent too big header while reading response header from upstream
- 字符串或文件处理的一个可选流程