字典

key它必须是可哈希的,也就是说,它必须能够提供一个方式让自己被唯一表示出来。Swift的所有基础类型(例如String、Int、Double和Bool)默认都是可哈希的,这些类型都能够用作字典中的键。枚举成员中没有绑定值的值(参见枚举)默认也是可哈希的。 而值可以是NSobjcet的类型

不可变字典 let

  1. let dictA = ["key1":"value1","key2":"value2","key3":]
  2.  
  3. print(dictA["key3"])

可变字典 var 字典的键值对的类型 是根据初始化时候的类型来决定的,类型是后面无法改变的

①第一种字典:

可以存放任意类型的字典 比如 键值对(key:value) 可以是数组

  1. let array = [,,,,]
  2.  
  3. var dictB = [:"value1","":"value2","key3":"value3","key4":array]

获取dictB 对应的所有的key

  1. for key in dictB.keyEnumerator() {
  2. print(key)
  3. }
  4. print("dictB==\(dictB)")

②第二种字典

swift的 Dictionary 类型的字典 存放 一些基本 类型的键值对

  1. var dictM:Dictionary = ["1":"value1","2":"value2","key3":"value3","key4":"4"]

获取字典元素个数

  1. dictM.count

将一个键值对插入字典中

  1. dictM["key6"] = ""

修改字典中某一个key对应的value值

  1. dictM[""] = "change"

更新字典的键值对.如果存在相同的键,那么就更新对应的值!如果不存在,就将新的键值对放入字典

updateValue(forKey:)函数返回一个值的类型的可选值。例如一个值类型为String的字典,该函数返回值的类型为String?。如果更新前该键的值存在,函数返回值就是该键更新前的值,如果不存在,函数返回值就是nil:  这让你能够检测是否发生了值的更新。

  1. let oldValue = dictM.updateValue("", forKey: "")

因为key"1" 之前存在,所以 oldVaue 的值就为更新前的值

if oldValue == nil {

print("oldValue--不存在-->\(oldValue)")

}else{

print("oldValue--存在-->\(oldValue)")

}

打印结果

oldValue--存在-->Optional("change")

因为key"new" 之前不存在,所以 newvalue 为 nil

if newValue == nil {

print("newValue==不存在===\(newValue)")

}else{

print("newValue==存在===\(newValue)")

}

打印结果

newValue==不存在===nil

移除键值对

根据key 值移除, 会有一个返回值,根据返回值是否为nil 来判断时候移除成功,如果移除成功 会返回被移除的key对应的value值,如果key不存在或者移除失败那么返回nil

  1. let move = dictM.removeValueForKey("ker9")
  2.  
  3. if move == nil {
  4.  
  5. print("move=nil==\(move)")
  6.  
  7. }else {
  8.  
  9. print("move=success==\(move)")
  10.  
  11. }
  12.  
  13. print(dictM)

移除所有元素, 如果keepCapacity为True,则保留字典原有的存储空间。

  1. dictM.removeAll(keepCapacity: true)

遍历字典

  1. for (key,value) in dictM {
  2.  
  3. print("\(key)----\(value)")
  4.  
  5. }

获取字典所有的key

  1. for key in dictM.keys {
  2. print("====\(key)")
  3. }

获取字典所有的value

  1. for value in dictM.values{
  2.  
  3. print(value)
  4.  
  5. }

将字典的key或者value 作为数组的元素 组成新的数组

  1. let arraykey = [String](dictM.keys)
  2.  
  3. let arrayValue = [String](dictM.values)
  4.  
  5. print(arrayValue)

Swift 03.Dictionary的更多相关文章

  1. Swift 字典 Dictionary基本用法

    import UIKit /* 字典的介绍 1.字典允许按照某个键访问元素 2.字典是由两部分组成, 一个键(key)集合, 一个是值(value)集合 3.键集合是不能有重复的元素, 值集合可以有重 ...

  2. Swift - 03 - 整数类型

    //: Playground - noun: a place where people can play import UIKit var str = "Hello, playground& ...

  3. Swift 里 Dictionary

    Dictionary uses two storage schemes: native storage and Cocoa storage. 只看 native storage 的,也就是和 OC 无 ...

  4. Swift 学习笔记(五)

    126. 协议(Protocols) 协议语法(Protocol Syntax) 属性要求(Property Requirements) 方法要求(Method Requirements) Mutat ...

  5. 【Swift学习】Swift编程之旅---可选链(二十一)

    可选链Optional Chaining是一种可以在当前值可能为nil的可选值上请求和调用属性.方法及下标的方法.如果可选值有值,那么调用就会成功:如果可选值是nil,那么调用将返回nil.多个调用可 ...

  6. swift:入门知识之泛型

    在尖括号里写一个名字来创建一个泛型函数或者类型 例如<T>.<Type> 可以创建泛型类.枚举和结构体 在类型后使用where来指定一个需求列表.例如,要限定实现一个协议的类型 ...

  7. Swift字典类

    在Foundation框架中提供一种字典集合,它是由“键-值”对构成的集合.键集合不能重复,值集合没有特殊要求.键和值集合中的元素可以是任何对象,但是不能是nil.Foundation框架字典类也分为 ...

  8. 学习Swift -- 泛型

    泛型 泛型代码可以让你写出根据自我需求定义.适用于任何类型的,灵活且可重用的函数和类型.它的可以让你避免重复的代码,用一种清晰和抽象的方式来表达代码的意图. 泛型所解决的问题 先来看一个交换两个int ...

  9. 学习Swift -- 可选链

    可空链式调用 可空链式调用是一种可以请求和调用属性.方法及下标的过程,它的可空性体现于请求或调用的目标当前可能为空(nil).如果可空的目标有值,那么调用就会成功:如果选择的目标为空(nil),那么这 ...

随机推荐

  1. STM32 MX Cube生成的工程中 使用printf向Uart发送数据

    1. 在main函数前面添加: int fputc(int ch,FILE *f){ uint8_t temp[1]={ch}; HAL_UART_Transmit(&huart1,temp, ...

  2. tensorflow安装日志(PIP)

    最近刚刚接触深度学习,安装一下tf 环境:华硕Z170主板.i7 6700k.GTX1070.Ubuntu16.04.Python2.7 在这之前先装好了cuda8.0.cudnn5.0.caffe整 ...

  3. 开发一个IONIC应用的首要操作(宏观)

    1.创建工程 2.搭建路由(routes.js) 3.添加控制(controller.js) 4.加载模块(app.js)

  4. XFire完整入门教程

    网上关于XFire入门的教程不少,要么是讲得很简单,就像Hello World一样的程序,要么就是通过IDE集成的工具来开发的,这对于不同的人群有诸多不便,关于XFire的一些详细的信息就不再多讲,可 ...

  5. CSS学习心得2

    CSS样式 链接 a:link - 普通的.未被访问的链接 a:visited - 用户已访问的链接 a:hover - 鼠标指针位于链接的上方 a:active - 链接被点击的时刻 当为链接的不同 ...

  6. Sprint(第八天11.21)

  7. http cookie相关

    http://www.webryan.net/2011/08/wiki-of-http-cookie/

  8. Canvas实现图片放大缩小移动操作

    对于HTML5相信大家都不陌生,很早就出来了,但是貌似都没有真正的使用过.最近做项目时要实现这样一个需求:一个图片,大小不固定,要求能实现类似地图一样放大.缩小.移动功能.这里就很合适使用html5的 ...

  9. VS.Net 2015 Update3 学习(1) 支持Webpack

    让vs.net 编译的时候自动执行webpack 首先 管理员模式下打开 “Developer Command Prompt for VS2015", 是管理员模式啊! 然后进入 cd c: ...

  10. ArcGIS影像配准与空间配准

    ArcGIS影像配准与空间配准 ArcGIS影像配准与空间配准 地图配准可分为影像配准和空间配准.影像配准的对象是raster图,譬如TIFF图.配准后的图可以保存为ESRI GRID, TIFF,或 ...