Swift 03.Dictionary
字典
key它必须是可哈希的,也就是说,它必须能够提供一个方式让自己被唯一表示出来。Swift的所有基础类型(例如String、Int、Double和Bool)默认都是可哈希的,这些类型都能够用作字典中的键。枚举成员中没有绑定值的值(参见枚举)默认也是可哈希的。 而值可以是NSobjcet的类型
不可变字典 let
let dictA = ["key1":"value1","key2":"value2","key3":] print(dictA["key3"])
可变字典 var 字典的键值对的类型 是根据初始化时候的类型来决定的,类型是后面无法改变的
①第一种字典:
可以存放任意类型的字典 比如 键值对(key:value) 可以是数组
let array = [,,,,] var dictB = [:"value1","":"value2","key3":"value3","key4":array]
获取dictB 对应的所有的key
for key in dictB.keyEnumerator() {
print(key)
}
print("dictB==\(dictB)")
②第二种字典
swift的 Dictionary 类型的字典 存放 一些基本 类型的键值对
var dictM:Dictionary = ["1":"value1","2":"value2","key3":"value3","key4":"4"]
获取字典元素个数
dictM.count
将一个键值对插入字典中
dictM["key6"] = ""
修改字典中某一个key对应的value值
dictM[""] = "change"
更新字典的键值对.如果存在相同的键,那么就更新对应的值!如果不存在,就将新的键值对放入字典
updateValue(forKey:)函数返回一个值的类型的可选值。例如一个值类型为String的字典,该函数返回值的类型为String?。如果更新前该键的值存在,函数返回值就是该键更新前的值,如果不存在,函数返回值就是nil: 这让你能够检测是否发生了值的更新。
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
let move = dictM.removeValueForKey("ker9") if move == nil { print("move=nil==\(move)") }else { print("move=success==\(move)") } print(dictM)
移除所有元素, 如果keepCapacity为True,则保留字典原有的存储空间。
dictM.removeAll(keepCapacity: true)
遍历字典
for (key,value) in dictM { print("\(key)----\(value)") }
获取字典所有的key
for key in dictM.keys {
print("====\(key)")
}
获取字典所有的value
for value in dictM.values{ print(value) }
将字典的key或者value 作为数组的元素 组成新的数组
let arraykey = [String](dictM.keys) let arrayValue = [String](dictM.values) print(arrayValue)
Swift 03.Dictionary的更多相关文章
- Swift 字典 Dictionary基本用法
import UIKit /* 字典的介绍 1.字典允许按照某个键访问元素 2.字典是由两部分组成, 一个键(key)集合, 一个是值(value)集合 3.键集合是不能有重复的元素, 值集合可以有重 ...
- Swift - 03 - 整数类型
//: Playground - noun: a place where people can play import UIKit var str = "Hello, playground& ...
- Swift 里 Dictionary
Dictionary uses two storage schemes: native storage and Cocoa storage. 只看 native storage 的,也就是和 OC 无 ...
- Swift 学习笔记(五)
126. 协议(Protocols) 协议语法(Protocol Syntax) 属性要求(Property Requirements) 方法要求(Method Requirements) Mutat ...
- 【Swift学习】Swift编程之旅---可选链(二十一)
可选链Optional Chaining是一种可以在当前值可能为nil的可选值上请求和调用属性.方法及下标的方法.如果可选值有值,那么调用就会成功:如果可选值是nil,那么调用将返回nil.多个调用可 ...
- swift:入门知识之泛型
在尖括号里写一个名字来创建一个泛型函数或者类型 例如<T>.<Type> 可以创建泛型类.枚举和结构体 在类型后使用where来指定一个需求列表.例如,要限定实现一个协议的类型 ...
- Swift字典类
在Foundation框架中提供一种字典集合,它是由“键-值”对构成的集合.键集合不能重复,值集合没有特殊要求.键和值集合中的元素可以是任何对象,但是不能是nil.Foundation框架字典类也分为 ...
- 学习Swift -- 泛型
泛型 泛型代码可以让你写出根据自我需求定义.适用于任何类型的,灵活且可重用的函数和类型.它的可以让你避免重复的代码,用一种清晰和抽象的方式来表达代码的意图. 泛型所解决的问题 先来看一个交换两个int ...
- 学习Swift -- 可选链
可空链式调用 可空链式调用是一种可以请求和调用属性.方法及下标的过程,它的可空性体现于请求或调用的目标当前可能为空(nil).如果可空的目标有值,那么调用就会成功:如果选择的目标为空(nil),那么这 ...
随机推荐
- python的tab自动补全
vi tab.py #!/usr/bin/env python # python startup file import sys import readline import rlcompleter ...
- Spring MVC视图解析器
Spring MVC提供的视图解析器使用ViewResolver进行视图解析,实现浏览器中渲染模型.ViewResolver能够解析JSP.Velocity模板.FreeMarker模板和XSLT等多 ...
- 【leetcode❤python】 125. Valid Palindrome
#-*- coding: UTF-8 -*- class Solution(object): def isPalindrome(self, s): ""&quo ...
- push_back模式工作
自己决心今天做一个 xxx项目,写完xxx功能. 早晨9点多张三说:“A项目有一个 bug要修复”,估计十分钟就修复了,然后放弃手头项目去搞.修复这个bug的时候,发现这个A项目有些代码还有可以优化的 ...
- 景区3D指纹验证系统解决方案
旅游业已成为全球经济中发展势头最强劲和规模最大的产业之一.旅游业在城市经济发展中的产业地位.经济作用逐步增强,旅游业对城市经济的拉动性.社会就业的带动力.以及对文化与环境的促进作用日益显现.指纹门票为 ...
- caffe安装:ubuntu16.04 + opencv2.4 + python 2.7+ CUDA 8.0 RC + CuDNN 5.0
官方教程:http://caffe.berkeleyvision.org/install_apt.html 主要参考教程: https://github.com/BVLC/caffe/wiki/Ubu ...
- .Net环境下的缓存技术介绍
.Net环境下的缓存技术介绍 摘要: 介绍缓存的基本概念和常用的缓存技术,给出了各种技术的实现机制的简单介绍和适用范围说明,以及设计缓存方案应该考虑的问题(共17页) 1 概念 1.1 ...
- 个人博客作业Week2
一.是否需要有代码规范 这些规范都是官僚制度下产生的浪费大家的编程时间.影响人们开发效率, 浪费时间的东西. 我反驳这个观点,这些规范是成千上万的程序员在开发程序中总结出来的代码规范,他有助于我们的开 ...
- 【Java】多线程_学习笔记
多线程 1.进程 进程:当一个程序进入内存运行时,它就成为了进程.进程具有独立性.动态性.并发性. A.独立性:进程是系统中独立存在的实体,它可以拥有自己独立的资源,每一个进程都拥有自己私有的地址空间 ...
- 重写toString()方法来描述一个类
package com.zch.test; /* toString方法以及重写toString方法 toString方法是一个自我描述方法 方法本身返回的是该对象的实现类的 类名 + @ + hash ...