1.定义

//1.基本定义 [key 1: value 1, key 2: value 2, key 3: value 3]
var dict = ["name":"Xiaoqin","sex":"female","age":"20"]
for (key,value) in dict {
println(key,value)
} //2.类型强制定义 Dictionary<keyType,valueType>
var dict2:Dictionary<Int,String>=[1:"Beijing",2:"Nanjing"]
for (key,value) in dict2 {
println(key,value)
} //3.空字典
var namesOfIntegers = Dictionary<Int, String>()
// namesOfIntegers 是一个空的 Dictionary<Int, String> //4.根据上下文使用[:]重新创建空字典
namesOfIntegers[16] = "sixteen"
// namesOfIntegers 现在包含一个键值对
namesOfIntegers = [:]
// namesOfIntegers 又成为了一个 Int, String类型的空字典

  

2.数据项总数:count

var airports = ["TYO": "Tokyo", "DUB": "Dublin"]
println("The dictionary of airports contains \(airports.count) items.")
// 打印 "The dictionary of airports contains 2 items."(这个字典有两个数据项)

  

2.读取和修改字典

//1.使用key值来添加和修改数据项
// 1.1添加
airports["LHR"] = "London"
// 1.2修改
airports["LHR"] = "London Heathrow" //2.使用updateValue(forKey:)函数来添加或者修改值
// 2.1添加
airports.updateValue("Beijing", forKey: "BJ")
// 2.2修改
airports.updateValue("Bei Jing", forKey: "BJ")

注:1.updateValue(forKey:)函数会返回包含一个字典值类型的可选值。举例来说:对于存储String值的字典,这个函数会返回一个String?或者“可选 String”类型的值。如果值存在,则这个可选值值等于被替换的值,否则将会是nil

  2.我们也可以使用下标语法来在字典中检索特定键对应的值。由于使用一个没有值的键这种情况是有可能发生的,可选类型返回这个键存在的相关值,否则就返回nil:  

//1.updateValue返回值为原值
if let oldValue = airports.updateValue("Dublin Internation", forKey: "DUB") {
println("The old value for DUB was \(oldValue).") //Dublin
} //2.key没有对应的value时返回nil,使用可选值optional做判断
if let airportName = airports["DUC"] {
println("The name of the airport is \(airportName).")
} else {
println("That airport is not in the airports dictionary.")
}

  

3.删除元素

var airports = ["TYO": "Tokyo", "DUB": "Dublin", "BJ": "Beijing"]

//1.直接设置为nil
airports["DUB"] = nil // DUB现在被移除了 //2.使用removeValueForKey函数删除key对应的字典项
airports.removeValueForKey("BJ")

  注:removeValueForKey方法也可以用来在字典中移除键值对。这个方法在键值对存在的情况下会移除该键值对并且返回被移除的value或者在没有值的情况下返回nil

var airports = ["TYO": "Tokyo", "DUB": "Dublin", "BJ": "Beijing"]
if let removedValue = airports.removeValueForKey("SH") {
println("The removed airport's name is \(removedValue).")
} else {
println("The airports dictionary does not contain a value for SH.") //此句被打印
}

  

4.遍历

var airports = ["TYO": "Tokyo", "DUB": "Dublin"]

//1.键值对统一遍历
for (airportCode, airportName) in airports {
println("\(airportCode): \(airportName)")
} //2.key和value分别遍历
for airportCode in airports.keys {
println("Airport code: \(airportCode)")
} for airportName in airports.values {
println("Airport name: \(airportName)")
}

  

5.转换为数组

如果我们只是需要使用某个字典的键集合或者值集合来作为某个接受Array实例 API 的参数,可以直接使用keys或者values属性直接构造一个新数组

var airports = ["TYO": "Tokyo", "DUB": "Dublin"]

let airportCodes = Array(airports.keys)
println(airportCodes) //[DUB, TYO] let airportNames = Array(airports.values)
println(airportNames) //[Dublin, Tokyo]

  

Swift学习笔记(6)--字典的更多相关文章

  1. 【swift学习笔记】二.页面转跳数据回传

    上一篇我们介绍了页面转跳:[swift学习笔记]一.页面转跳的条件判断和传值 这一篇说一下如何把数据回传回父页面,如下图所示,这个例子很简单,只是把传过去的数据加上了"回传"两个字 ...

  2. Swift学习笔记(一)搭配环境以及代码运行成功

    原文:Swift学习笔记(一)搭配环境以及代码运行成功 1.Swift是啥? 百度去!度娘告诉你它是苹果最新推出的编程语言,比c,c++,objc要高效简单.能够开发ios,mac相关的app哦!是苹 ...

  3. swift学习笔记4——扩展、协议

    之前学习swift时的个人笔记,根据github:the-swift-programming-language-in-chinese学习.总结,将重要的内容提取,加以理解后整理为学习笔记,方便以后查询 ...

  4. swift学习笔记3——类、结构体、枚举

    之前学习swift时的个人笔记,根据github:the-swift-programming-language-in-chinese学习.总结,将重要的内容提取,加以理解后整理为学习笔记,方便以后查询 ...

  5. swift学习笔记1——基础部分

    之前学习swift时的个人笔记,根据github:the-swift-programming-language-in-chinese学习.总结,将重要的内容提取,加以理解后整理为学习笔记,方便以后查询 ...

  6. Swift学习笔记一

    最近计划把Swift语言系统学习一下,然后将MagViewer用这种新语言重构一次,并且优化一下,这里记录一下Swift的学习笔记. Swift和Objective-C相比,在语法和书写形式上做了很多 ...

  7. 记录:swift学习笔记1-2

    swift还在不断的更新做细微的调整,都说早起的鸟儿有虫吃,那么我们早点出发吧,趁着国内绝大多数的coder们还没有开始大范围普遍应用. 网上有些大神说:swift很简单!我不同意这个观点,假如你用h ...

  8. swift学习笔记5——其它部分(自动引用计数、错误处理、泛型...)

    之前学习swift时的个人笔记,根据github:the-swift-programming-language-in-chinese学习.总结,将重要的内容提取,加以理解后整理为学习笔记,方便以后查询 ...

  9. swift学习笔记2——函数、闭包

    之前学习swift时的个人笔记,根据github:the-swift-programming-language-in-chinese学习.总结,将重要的内容提取,加以理解后整理为学习笔记,方便以后查询 ...

随机推荐

  1. [android]DES/3DES/AES加密方式

    DES 支持8位加密解密,3Des支持24位,Aes支持32位.3Des是Des算法做三次.位数的单位是字节byte.不是bits. 3Des是把24位分成3组.第一组八位用来加密,第二组8位用于解密 ...

  2. UVA 1415 - Gauss Prime(数论,高斯素数拓展)

    UVA 1415 - Gauss Prime 题目链接 题意:给定a + bi,推断是否是高斯素数,i = sqrt(-2). 思路:普通的高斯素数i = sqrt(-1),推断方法为: 1.假设a或 ...

  3. PIC18F4520 + NRF24L01

    SI SO应该对调过来用.. TX /* ** Tx.c ** Transmit test program for PIC18F4520 and nRF24L01 or nRF24L01+ ** Us ...

  4. [HNOI2012] 永无乡 解题报告 (splay+启发式合并)

    题目链接:https://www.luogu.org/problemnew/show/P3224#sub 题目: 题目大意: 维护多个联通块,没有删除操作,每次询问某一联通块的第k大 解法: 维护联通 ...

  5. 网络通信-ping命令

  6. 关于docker部署javaweb应用的问题

    我做了两个镜像,一个mysql,一个tomcat.建完mysql容器之后,在建tomcat的时候用--link把他们链接起来了进tomcat的容器里面 /etc/hosts 也发现了mysql的ip但 ...

  7. [POI2010]KLO-Blocks(单调栈)

    题意 给出N个正整数a[1..N],再给出一个正整数k,现在可以进行如下操作:每次选择一个大于k的正整数a[i],将a[i]减去1,选择a[i-1]或a[i+1]中的一个加上1.经过一定次数的操作后, ...

  8. 命令alias、gerp、find及基础Shell脚本

    一. alias 命令:系统设置命令别名 用法:alias [-p] [name[=value] ... ]    注意‘=’和字符串之间不能包含空格 显示当前设置的别名:alias 或 alias ...

  9. word/excel/ppt 2 PDF

    PHP 实现 word/excel/ppt 转换为 PDF 一般最常见的就是利用OpenOffice来转换,来看看实现的核心代码: class PDFConverter { private $com; ...

  10. hdu 思维风暴

    点击打开链接 偶然在杭电上看到的题目,数学题.好像是一道六年级奥赛题目,反正我是没有想出来,也知道往那上面想.就是找不到规律啊.学习了网上的方法, 这道题须要求出来多添加的点,就是与之前每条边添加的点 ...