Swift_字典详解


点击查看源码

初始化

fileprivate func testInit() {
//空字典
var dic = [String:String]()
print(dic) dic = [:]
print(dic) dic = Dictionary()
print(dic) dic = Dictionary<String,String>()
print(dic) //非空字典
dic = ["name":"XuBaoAiChiYu","QQ":"1045214799"]
print(dic) dic = Dictionary(dictionaryLiteral: ("name","XuBaoAiChiYu"),("QQ","1045214799"))
print(dic) /* print [:]
[:]
[:]
[:]
["name": "XuBaoAiChiYu", "QQ": "1045214799"]
["name": "XuBaoAiChiYu", "QQ": "1045214799"] */
}

相关属性

//相关属性
fileprivate func testProperties() { let dic = ["name":"XuBaoAiChiYu","QQ":"1045214799"]
print(dic) print("count:\(dic.count)") // 有多个对元素
print("isEmpty:\(dic.isEmpty)") // 是否为空 // 获取所有key
let keys = [String](dic.keys)
print("keys:\(keys)") // 获取所有value
let values = [String](dic.values)
print("values:\(values)") print("startIndex:\(dic.startIndex)") // 首脚标
print("endIndex:\(dic.endIndex)") // 尾脚标 /* print ["name": "XuBaoAiChiYu", "QQ": "1045214799"]
count:2
isEmpty:false
keys:["name", "QQ"]
values:["XuBaoAiChiYu", "1045214799"]
startIndex:DictionaryIndex<String, String>(_value: Swift.DictionaryIndexRepresentation<Swift.String, Swift.String>._native(Swift._NativeDictionaryIndex<Swift.String, Swift.String>(nativeStorage: , offset: 1)))
endIndex:DictionaryIndex<String, String>(_value: Swift.DictionaryIndexRepresentation<Swift.String, Swift.String>._native(Swift._NativeDictionaryIndex<Swift.String, Swift.String>(nativeStorage: , offset: 4))) */
}

查找元素

//查找元素
fileprivate func testFindingObjects() {
let dic = ["name":"XuBaoAiChiYu","QQ":"1045214799"]
print(dic) if let dicIndex = dic.index(forKey: "name") { // 获取位置
let item = dic[dicIndex] // 根据位置获取键值对
print("key:\(item.0);value:\(item.1)")
} let value = dic["name"] // 根据key提取Value
print("value:\(value)") // 遍历输出
for (key, value) in dic {
print("\(key): \(value)")
} // 所有key输出
for key in dic.keys {
print("key:\(key)")
} // 所有value输出
for value in dic.values {
print("value: \(value)")
} /* print ["name": "XuBaoAiChiYu", "QQ": "1045214799"]
key:name;value:XuBaoAiChiYu
value:Optional("XuBaoAiChiYu")
name: XuBaoAiChiYu
QQ: 1045214799
key:name
key:QQ
value: XuBaoAiChiYu
value: 1045214799 */
}

增加元素

//增加元素
fileprivate func testAdd() {
var dic = ["name":"XuBaoAiChiYu","QQ":"1045214799"]
print(dic) // 如果没有则添加,有则修改
dic["language"] = "swift"
print(dic) /* print ["name": "XuBaoAiChiYu", "QQ": "1045214799"]
["language": "swift", "name": "XuBaoAiChiYu", "QQ": "1045214799"] */
}

删除元素

//删除元素
fileprivate func testRemove() {
var dic = ["name":"XuBaoAiChiYu","QQ":"1045214799"]
print(dic) let oldValue = dic.removeValue(forKey: "name")// 根据key删除,并返回删除的value
print("\(oldValue)") // 先找到位置,然后根据位置删除
if let dictIndex = dic.index(forKey: "QQ") {
let oldItem = dic.remove(at: dictIndex)// 返回删除的元素对
print("key:\(oldItem.0);value:\(oldItem.1)")
} dic.removeAll() // 删除所有元素
print(dic) /* print ["name": "XuBaoAiChiYu", "QQ": "1045214799"]
Optional("XuBaoAiChiYu")
key:QQ;value:1045214799
[:] */
}

修改元素

//修改元素
fileprivate func testReplace() {
var dic = ["name":"XuBaoAiChiYu","QQ":"1045214799"]
print(dic) // 如果没有则添加,有则修改
dic["name"] = "XUBAO" // 修改
print(dic) let oldValue = dic.updateValue("XUBAOAICHIYU", forKey: "name") // 修改,并返回原来的value
print("\(oldValue)") /* print ["name": "XuBaoAiChiYu", "QQ": "1045214799"]
["name": "XUBAO", "QQ": "1045214799"]
Optional("XUBAO") */
}

排序

//排序
fileprivate func testSort() {
let dic = ["name":"XuBaoAiChiYu","QQ":"1045214799"]
print(dic) // 排序主要只排序key或者value,然后借用Array的排序
// 排序key
var array = dic.keys.sorted(by: { str1,str2 in str1 < str2 })
array = dic.keys.sorted(by: <)
print(array) // 排序value
array = dic.values.sorted(by: {$0 > $1})
print(array) /* print ["name": "XuBaoAiChiYu", "QQ": "1045214799"]
["QQ", "name"]
["XuBaoAiChiYu", "1045214799"] */
}

文件读写

fileprivate func testReadingAndWriting() {
// Document目录
let documents:[String] = NSSearchPathForDirectoriesInDomains(FileManager.SearchPathDirectory.documentDirectory, FileManager.SearchPathDomainMask.userDomainMask, true)
let docDirPath = documents.first!
let path = (docDirPath as NSString).appendingPathComponent("test.plist")
let url = URL(fileURLWithPath: path)
var dic = ["name":"XuBaoAiChiYu","QQ":"1045214799"] // 写
(dic as NSDictionary).write(toFile: path, atomically: true)
(dic as NSDictionary).write(to: url, atomically: true) // 读
dic = NSDictionary(contentsOfFile: path) as! Dictionary
print(dic)
dic = NSDictionary(contentsOf: url) as! Dictionary
print(dic) /* print ["name": "XuBaoAiChiYu", "QQ": "1045214799"]
["name": "XuBaoAiChiYu", "QQ": "1045214799"] */
}

Swift_字典详解的更多相关文章

  1. Swift_字符串详解(String)

    Swift_字符串详解(String) 类型别名 //类型别名 fileprivate func testTypeAliases() { let index = String.Index.self p ...

  2. Swift_数组详解

    Swift_数组详解 点击查看源码 初始化 //初始化 fileprivate func testInit() { //空数组 var array = [Int]() print(array) arr ...

  3. python七类之字典详解

    一.字典 一.关键字:dict 1.字典是唯一的键值对数据,其表现形式:   dic  =  {键:值},​字典里的键必须保证是唯一的 2.键必须是不可变的数据类型: ​a.故列表是不能当键的 b.所 ...

  4. Python学习之字典详解

    在元组和列表中,都是通过编号进行元素的访问,但有的时候我们按名字进行数据甚至数据结构的访问,在c++中有map的概念,也就是映射,在python中也提供了内置的映射类型--字典.映射其实就是一组key ...

  5. Python字典详解

    转载请注明出处 Python字典(dict)是一个很常用的复合类型,其它常用符合类型有:数组(array).元组(touple)和集合(set).字典是一个key/value的集合,key可以是任意可 ...

  6. python 字典详解

    1.字典的定义 字典类似于列表,但相对于列表来说字典更加通用,列表的下标必须必须为整数,而字典下标则可以为任意字符串/数字等,不可以是可变数据类型(列表,数组,元组) 字典包含下标(keys)集合和值 ...

  7. Python元组与字典详解

    Python 元组 Python的元组与列表类似,不同之处在于元组的元素不能修改. 元组使用小括号,列表使用方括号. 元组创建很简单,只需要在括号中添加元素,并使用逗号隔开即可. 如下实例: tup ...

  8. Python之dict字典详解

    Python内置了字典:dict的支持,dict全称dictionary,在其他语言中也称为map,字典是另 一种可变容器模型,且可存储任意类型对象.具有极快的查找速度. 字典是一种通过名字或者关键字 ...

  9. Python中的字典详解

    https://www.cnblogs.com/yjd_hycf_space/p/6880026.html

随机推荐

  1. 【转载】BaseDao设计

    BaseDao接口设计 1 import java.util.List; /** * Dao接口,定义Dao基本操作 由BaseDaoImpl实现 * @author wht * @param < ...

  2. Android使用主题属性引发的问题

    最近在做一个项目的Porting.直接改变了应用的Theme,最没有仔细的检查.结果应用在某些场景下直接就Crash了.还好,通过Log可以看到是在Inflate某个资源的时候出错导致的.通过定位资源 ...

  3. Java内部类详解 2

    Java内部类详解 说起内部类这个词,想必很多人都不陌生,但是又会觉得不熟悉.原因是平时编写代码时可能用到的场景不多,用得最多的是在有事件监听的情况下,并且即使用到也很少去总结内部类的用法.今天我们就 ...

  4. vim 安装vundle 之curl

    百度出来的博客文章,配置curl.cmd 的内容win7 x64 好像有误 贴下正确的 @rem Do not use "echo off" to not affect any c ...

  5. 微信小程序的button去边框

    wxml <button class='niu'>123123</button> css niu::after{ border:none; }

  6. 关于input 中 hidden属性在后台作用的实例

    在双模的项目中,我遇到了一个问题,我公司的双模项目是基于ECShop的框架,在完成订单列表的页面时,我写了两个form表单来单独传输数据,第一个表单是用来做搜素的,第二个表单是用来显示表单信息的,在控 ...

  7. .NET开源工作流RoadFlow-表单设计-日期时间选择

    在表单中添加一个日期时间选择框: 选择范围:指定一个日期选择范围. 时间:是否允许选择时间.

  8. Fiddler-修改HTTP请求参数

    在进行 App 测试时,经常需要修改请求参数,以获得不同的显示效果,以查看相应的页面显示处理.例如:可以通过修改 HTTP请求 的参数,来获取不同的响应结果. 下面以修改 HTTP请求的商品系统编号为 ...

  9. maven学习(一)setting.xml配置文件详解

    maven环境搭建: 1.官网下载zip包,解压至任意目录(如:E:\wly\apache-maven-3.2.5) 2.环境变量MAVEN_HOME(E:\wly\apache-maven-3.2. ...

  10. github代码上传教程

    github 上传代码步骤 一.git以及Github Git是个正快速成长的版本控制系统,它由GitHub维护. 优势: 1.支持离线开发,离线Repository. 2.强大的分支功能,适合多个独 ...